大众信息网

java中如何等待dom4j的XMLWriter写完文件?

答案:3  mip版
解决时间 2021-01-16 15:29
  • 提问者网友: 妳莂騙莪
  • 2021-01-16 03:31
XMLWriter writer=new XMLWriter(new FileOutputStream(new File(filePath)),format);
writer.write(doc);
writer.close();
String result = "success";

如何等待writer.write(doc)写完文件再给result 赋值?
目前的状况是writer.write(doc)在写的同时就开始执行下面代码了
最佳答案
  • 二级知识专家网友:口袋里的自由
  • 2021-01-16 03:51
Java在读取xml文件时,可以使用标志位来显示写完文件,示例如下:

public static String doc2String(Document document)
{
String s = "";
try
{
//使用输出流来进行转化
ByteArrayOutputStream out = new ByteArrayOutputStream();
//使用GB2312编码
OutputFormat format = new OutputFormat(" ", true, "GB2312");
XMLWriter writer = new XMLWriter(out, format);
writer.write(document); //写入文件
s = out.toString("GB2312");
System.out.println("我已经写完了");
}catch(Exception ex) //捕捉可能的异常
{
ex.printStackTrace();
}
return s;
}
全部回答
  • 1楼网友:那年仲夏
  • 2021-01-16 06:10
这个我好像没发现,一般处理的时候,用try{}catch{}来,如果没有异常 writer.write(doc); writer.close(); 刚被视为已经写完了文件,后面你可以直接给赋值 当然,如果出现异常了,自然就不用给result赋值 例如: String result = ""; try { XMLWriter writer=new XMLWriter(new FileOutputStream(new File(filePath)),format); writer.write(doc); writer.close(); result = "success"; System.out.println("处理文件结束,开始给result赋值 "); } catch (Exception e) { result = "fail"; e.printStackTrace(); }
  • 2楼网友:娇而不傲的猫
  • 2021-01-16 04:46
不会出现这问题吧,程序是顺序执行的,当执行完成后才会进入到下边的代码,也就是说当writer完成前不会执行result赋值,我觉得关键问题在你要主动刷新上,也就是 write.flush();给你段代码参考一下吧 File f=new File("d:/a.xml"); try { f.createNewFile(); } catch (IOException e) { e.printStackTrace(); } OutputStream os=null; try { os=new FileOutputStream(f); Writer write=new OutputStreamWriter(os,"UTF-8"); write.write(doc.asXML()); write.flush(); write.close(); os.close(); } catch (Exception e) { e.printStackTrace(); } return true;
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上问答信息
推荐资讯