java中如何等待dom4j的XMLWriter写完文件?
关注:149 答案:3 手机版
解决时间 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;
我要举报
如以上信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
推荐资讯
大家都在看