[英]Download file from server in java
在我的 java 应用程序中,我使用以下方法从服务器下载文件。
public void kitapJar(){
File f = new File("C:/PubApp_2.0/update/lib/kitap.jar");
try{
URL kitap = new URL("http://example.com/update/PubApp_2.0.jar");
org.apache.commons.io.FileUtils.copyURLToFile(kitap, f);
}
catch(IOException ex){
System.out.println("Error...!!");}
}
}
但是这个下载很慢。 我怎样才能让它快?
从 Java 7 开始,您可以下载具有内置功能的文件,就像
Files.copy(
new URL("http://example.com/update/PubApp_2.0.jar").openStream(),
Paths.get("C:/PubApp_2.0/update/lib/kitap.jar"));
// specify StandardCopyOption.REPLACE_EXISTING as 3rd argument to enable overwriting
对于早期版本,从 Java 1.4 到 Java 6 的解决方案是
try(
ReadableByteChannel in=Channels.newChannel(
new URL("http://example.com/update/PubApp_2.0.jar").openStream());
FileChannel out=new FileOutputStream(
"C:/PubApp_2.0/update/lib/kitap.jar").getChannel() ) {
out.transferFrom(in, 0, Long.MAX_VALUE);
}
此代码将 URL 内容传输到没有任何 3rd 方库的文件。 如果它仍然很慢,您就知道这不是附加库的错,也很可能不是 Java 的错。 至少这里没有什么可以改进的。 那么你应该在JVM之外寻找原因。
从 Java 8 开始,您可以这样做:
ReadableByteChannel readChannel = Channels.newChannel(new URL("http://example.com/update/PubApp_2.0.jar").openStream());
FileOutputStream fileOS = new FileOutputStream("C:\\PubApp_2.0\\update\\lib\\kitap.jar");
FileChannel writeChannel = fileOS.getChannel();
writeChannel
.transferFrom(readChannel, 0, Long.MAX_VALUE);
这应该很快!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.