2016-03-08 47 views
2

我下載一個文件,Files.copy方法:如何取消Java中的Files.copy()而不使用非API類?

Files.copy(in, Paths.get(targetZipFile), StandardCopyOption.REPLACE_EXISTING) 

如果下載速度很慢我想取消它。

我發現計算器下面的主題與同一個標題: How to cancel Files.copy() in Java?

但這種解決方案使用私有API:

訪問限制:類型'ExtendedCopyOption'不是API(限制所需的庫'C:\Program Files\Java\jdk1.8.0_60\jre\lib\rt.jar'

是否有另一種取消方法Files.copy()

回答

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如果線程被中斷。

相關問題