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

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;

我要举报

如以上信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!

推荐资讯

大家都在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值