1

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

如果 xml 格式错误,则将其移至错误文件夹;我们正在使用下面的方法将文件移动到错误文件夹但低于异常。

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

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

moveErrorFolder 中的异常:复制到“c:/processed/error/a.xml”后无法删除原始文件“c:/processed/a.xml”

4

7 回答 7

5
  1. java进程无权删除文件,但如果你可以在上面写,你就可以删除它。
  2. 该文件被另一个进程锁定。这通常发生在您编写使用 Excel 打开的 csv 时。
  3. 该文件被java进程自身锁定,在移动文件之前关闭()文件。
于 2013-04-19T12:58:53.617 回答
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);
于 2018-05-22T20:34:45.330 回答
0

另一个提供更多细节的异常可能嵌套在异常中,由原因属性持有

于 2013-04-19T13:13:16.753 回答
0

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

于 2013-09-11T20:06:05.647 回答
0

你能从 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);
于 2015-01-04T05:02:47.583 回答
0

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

于 2015-01-04T04:17:35.603 回答
0

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

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

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

于 2017-09-02T07:58:08.990 回答