Files.copy的阻止/同步版本

时间:2014-04-11 10:34:14

标签: java

我试图将文件从一个目录复制到另一个目录,但是我希望调用阻塞,以便程序只在整个文件传输后继续执行。

目前我正在使用Files.copy(),它使用非阻塞IO并立即返回。还有哪些其他选项(最好是内置于java标准库中)才能解决这个问题?

非常感谢, 加雷

3 个答案:

答案 0 :(得分:10)

Files.copy不是异步的,在副本完成之前它不会返回。

通常,如果方法是异步的,JavaDoc将非常清楚,并且该方法将接受某种形式的回调(lambda,或实现具有它调用的方法的接口的对象等。 ),或返回可用于检查完成(或错误)的内容。 Files.copy没有做到这一点,而且它的Javadoc并不是说它是异步的,所以没有理由怀疑它是异步的。 (我只是做了一个快速测试,确保它没有回复,直到副本完成。)

答案 1 :(得分:1)

对于同步复制,您可以使用流从一个文件描述符复制到另一个文件描述符。 有关更多信息,请查看以下链接: http://www.mkyong.com/java/how-to-copy-file-in-java/

答案 2 :(得分:0)

查看java.io包裹以获得答案。据我所知,File类操作有阻塞。