我正在使用Files.copy
方法下载文件:
Files.copy(in, Paths.get(targetZipFile), StandardCopyOption.REPLACE_EXISTING)
如果下载速度慢,我希望取消它。
我在stackoverflow上找到了以下与标题相同的主题: How to cancel Files.copy() in Java?
但是这个解决方案使用私有api:
访问限制:'ExtendedCopyOption'
类型不是API(对所需库'C:\Program Files\Java\jdk1.8.0_60\jre\lib\rt.jar'
的限制)
还有其他方法可以取消Files.copy()
吗?
答案 0 :(得分:3)
如果你想坚持使用NIO,你可以使用:
try (FileChannel zip = FileChannel.open(Paths.get(targetZipFile),
StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
zip.transferFrom(Channels.newChannel(in), 0, Long.MAX_VALUE);
}
根据documentation,如果线程被中断,FileChannel.transferFrom将抛出ClosedByInterruptException。