删除原始文件失败.处理步骤



我们正在运行jar,使用批处理文件作为窗口服务,并将xml文件放在c:/processed

目录;

如果XML有错误的格式,把它移到错误文件夹;我们正在使用下面的方法将文件移动到错误文件夹,但得到下面的异常。

我认为当进程运行时,它无法将文件移动到错误文件夹。

FileUtils.moveToDirectory("a.xml", "c:/processed/error", false);

movedErrorFolder异常:复制到'c:/processed/error/a.xml'后,删除原始文件'c:/processed/a.xml'失败

  1. java进程没有删除文件的权利,但是如果你可以在上面写,那么你可以删除它。
  2. 文件被其他进程锁定。当你用Excel打开csv文件时,通常会出现这种情况。
  3. 该文件被java进程self锁定,在移动该文件之前关闭该文件。

在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);

另一个给出更多细节的异常可能嵌套在exception中,由cause属性

持有

1)确保xml没有在编辑器/查看器中打开或被其他进程使用。
2)确保在移动文件之前使用。close()

检查您是否在目录中打开文件进行读写,并且在尝试删除父目录之前没有调用.close();

你能从apache试试这个方法吗:

void org.apache.commons.io.FileUtils.moveFileToDirectory(File srcFile, File destDir, boolean createDestDir)

使用此导入

     import org.apache.commons.io.FileUtils;

,你的代码应该是这样的:

  FileUtils.moveFileToDirectory(new File("c:/processed/a.xml"), new File("c:/processed/error"), false);

自过去24小时以来,我一直在努力解决这个错误。以上的答案都不适合我。我的操作系统是Windows 7 64位,我使用JDK 6。我尝试了方法FileUtils。moveToDirectory和file.delete.

我怀疑它与Java有关。我卸载并重新安装了JDK 6(我以管理员身份运行安装程序只是为了确保),并重新启动了我的机器,然后发现,错误消失了,一切都开始工作了。

现在不要问我为什么在2017年还在用JDK 6(一些企业软件****)

相关内容

  • 没有找到相关文章

最新更新