我们使用批处理文件作为窗口服务运行jar并将xml文件放在c:/processed
中
目录;
如果xml格式错误,则将其移至错误文件夹;我们使用下面的方法将文件移动到错误文件夹,但得到以下异常。
我认为当进程运行时无法将文件移动到错误文件夹。
FileUtils.moveToDirectory("a.xml", "c:/processed/error", false);
moveErrorFolder中的异常:复制到'c:/processed/error/a.xml'后无法删除原始文件'c:/processed/a.xml'
答案 0 :(得分:5)
答案 1 :(得分:2)
在reader.close()之后放入Thread.sleep() - 它就像魅力一样
reader.close();
// Thread is Explicitly made to Sleep as Threads were shared and files were not getting Moved.
Thread.sleep(10000);
答案 2 :(得分:0)
提供更多细节的另一个例外可能嵌套在由cause属性
持有的Exception中答案 3 :(得分:0)
1)确保您没有在编辑器/查看器中打开xml或由其他进程使用xml。
2)在移动文件之前确保你.close()。
答案 4 :(得分:0)
检查您是否在目录中打开了一个文件进行读取或写入,并且在尝试删除父目录之前没有调用.close();
。
答案 5 :(得分:0)
你可以从apache尝试这个方法:
void org.apache.commons.io.FileUtils.moveFileToDirectory(File srcFile, File destDir, boolean createDestDir)
e.g。
使用此导入
import org.apache.commons.io.FileUtils;
你的代码就像这样:
FileUtils.moveFileToDirectory(new File("c:/processed/a.xml"), new File("c:/processed/error"), false);
答案 6 :(得分:0)
自从过去24小时以来,我一直在努力解决这个错误。以上答案都不适合我。我的操作系统是Windows 7 64位,我使用的是JDK 6.我尝试了FileUtils.moveToDirectory方法以及file.delete。
我怀疑它与Java有关。我卸载并重新安装了JDK 6(我以管理员的身份运行安装程序以确定)并重新启动我的机器和Eureka,错误消失了,事情开始起作用了。
现在不要问我为什么我还在2017年使用JDK 6(一些企业软件****)