2012-04-11 33 views
2

Apache的FileUtils中的方法是否执行同步(阻塞)I/O?Apache的FileUtils中的方法执行同步(阻塞)I/O吗?

我正在调用FileUtils。 copyDirectoryToDirectory。在我的下一行中,我想删除我复制的目录。

例子:

FileUtils.copyDirectoryToDirectory(source, destination); 
FileUtils.deleteDirectory(source); 

只是想确认这是 “安全” 和异步(非阻塞)I/O没有发生。

谢谢。

回答

2

两件事情:

  1. FileUtils不是标准JDK的一部分,它在Apache Commons IO library类。
  2. 您提到的操作是不是使用非阻塞IO。

所以要回答你的问题,是的,你的整体操作是安全的。

+0

非常感谢。我问的原因是因为在第二行被执行后我们有时会遇到这个错误:java.io.IOException:无法删除目录。不知道为什么。 – 2012-04-11 19:09:08

+0

这应该是:无法删除目录。不是一个非常有用的信息。我们认为这可能是由于目录中的文件被锁定。文件/目录存储在Mac OS X系统上。在我们将操作系统从10.4升级到10.6后,我们的用户偶尔会在使用我们的系统尝试删除时出现此错误。此时,我们不确定如何调试,因为我们无法在本地系统上重现问题。 – 2012-04-12 16:14:55

+0

如果文件句柄在操作系统级别仍处于打开状态,则可以尝试在复制和删除之间稍稍延迟一段时间。另外,您是否有保证用户在其他程序中打开的'source'目录中没有任何文件? – Perception 2012-04-12 16:17:03