当前位置: 首页 > 面试题库 >

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

梁马鲁
2023-03-14
问题内容

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



 类似资料:
  • 我知道拳击是怎么做的。例如,当你写 Integer 时,正在调用 同样,我也可以看到拆箱的实现代码吗? 更新:在建议的问题中得到了回答。

  • 问题内容: 当我通过URL的InputStream读取xml,然后剪切掉URL以外的所有内容时,我得到了“ http://cliveg.bu.edu/people/sganguly/player/%20Rang%20De%20Basanti%20-%20Tu% 20Bin%20Bataye.mp3 “。 如您所见,有很多“%20”。 我希望网址不被转义。 在不使用第三方库的情况下,有什么方法可以用

  • 问题内容: 我的任务是必要的,不应取消,我如何要求ProgressMonitor不显示“取消”按钮,所以完成后它将自动关闭面板。 坦率 问题答案: 我在想,也许我可以要求它返回其中的组件并删除按钮 使用Swing教程中的ProgressMonitorDemo(由BalusC链接)进行了以下更改: 您还需要下载Swing Utils类。 该代码仅应执行一次,否则在对话框关闭时会得到一个NPE。我会让

  • 问题内容: 在AngularJS中给出Ajax请求 如果启动另一个请求(相同的后端,例如不同的参数),取消该请求的最有效方法是什么? 问题答案: 此功能通过超时参数添加到1.1.5版本中:

  • 问题内容: 我用于ajax请求,而+ 用于渲染UI。在我的应用程序中,有第三方时间轴(reactJS组件)。时间轴可以通过鼠标滚动进行管理。应用程序在发生任何滚动事件后发送对实际数据的ajax请求。问题是服务器上的请求处理可能比下一个滚动事件慢。在这种情况下,应用可能会有几个(通常是2-3个)请求已被弃用,因为用户会进一步滚动。这是一个问题,因为每次接收新数据时线都会开始重绘。(因为它是react