我正在使用 Java NIO 来复制一些东西:
Files.copy(source, target);
但我想让用户能够取消它(例如,如果文件太大并且需要一段时间)。
我应该怎么做?
最佳答案
使用选项 ExtendedCopyOption.INTERRUPTIBLE
。
注意: 此类可能并非在所有环境中都公开可用。
基本上,您在新线程中调用 Files.copy(...)
,然后使用 Thread.interrupt()
中断该线程:
Thread worker = new Thread() {
@Override
public void run() {
Files.copy(source, target, ExtendedCopyOption.INTERRUPTIBLE);
}
}
worker.start();
然后取消:
worker.interrupt();
请注意,这将引发 FileSystemException
。
关于java - 如何在 Java 中取消 Files.copy()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17083896/