【问题标题】:Download file from server in java用java从服务器下载文件
【发布时间】:2013-09-18 12:43:42
【问题描述】:

在我的 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 download


【解决方案1】:

从 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 内容传输到没有任何第三方库的文件。如果它仍然很慢,您就知道这不是附加库的问题,而且很可能不是 Java 的错。至少这里没有什么可以改进的。那么你应该在JVM之外寻找原因。

【讨论】:

    【解决方案2】:

    从 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);
    

    这应该很快!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-28
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多