java - 如何在 Java 中取消 Files.copy()?

标签 java io nio

我正在使用 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/

相关文章:

java - Apache Ignite 中单个分区上的 ScanQuery 是单线程还是多线程?

linux - 如何在/dev/fd下添加新的文件描述符?

java - 具有阻塞 IO 的 SSLEngine

Java : Why does the following infinite loop terminate without any error/exception

java - 在 Objectify 中保留类文字

io - Julia:IO/文件数据的流式转换

c - pset4 cs50 recovery.c 指导

Java NIO TCP超时问题

java - Java NIO 是如何分解消息的?

java - 将字段序列化为 json