2017-04-03 300 views
0

我正在使用FileUtils.copyInputStreamToFile下载各种文件(每个文件在10MB-200MB范围内)。有些文件位于中国托管的CDN上,因此它的互联网连接有时可疑。使用wget通常会导致文件下载正常 - 但它经常会显示漫长的拖延时间,我期望FileUtils会中断(我并不总是会出现错误)。在Groovy/Java下载文件下载

是否有配置copyInputStreamToFile,或替代它来处理停顿更好?我真的更喜欢这个呼叫去壳'wget'。

另外,是否有一个准确的方法来告诉下载是否失败,以便我可以删除不完整的文件并重新启动(不对文件进行散列和比较)。

回答

1

您可以使用专门的库来下载文件。谷歌API客户端有一个例如:

https://developers.google.com/api-client-library/java/google-api-java-client/media-download

OutputStream out = new FileOutputStream("/tmp/Test.jpg"); 

MediaHttpDownloader downloader = new MediaHttpDownloader(transport, httpRequestInitializer); 
downloader.setProgressListener(new CustomProgressListener()); 
downloader.download(requestUrl, out); 

搜索“谷歌的API客户端”,在行家的最新版本。