为什么在没有任何连接的情况下继续下载?

时间:2018-10-28 11:39:09

标签: java android download iostream

我之前在this link中问过类似的问题,但我仍然遇到这个问题。这是解释我的问题的代码:

package main;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainClass {

    public static void main(String[] args) throws IOException {
        URL url = new URL("http://speedtest-ny.turnkeyinternet.net/100mb.bin");
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setReadTimeout(10000);
        con.setConnectTimeout(10000);
        con.connect();
        InputStream inputStream = con.getInputStream();
        int len;
        byte[] buffer = new byte[1024];
        while ((len = inputStream.read(buffer)) != -1) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("downlaoding : " + len);
        }
        System.out.println("finished");
    }

}

如果在下载过程中断开笔记本电脑与Internet的连接,下载不会结束,并且会持续一段时间(取决于我断开笔记本电脑与Internet的连接时间)。我的问题是:

  1. 为什么会这样?
  2. 我该如何解决这个问题?

请帮助我。我真的需要你的答案。

如果我的句子语法不正确,我提前致歉。因为我的英语说得不好。

1 个答案:

答案 0 :(得分:1)

您似乎被此代码将下载速度限制为1 kB / s。事实并非如此。

此数据将在服务器和ISP能够发送数据后尽快下载到您的计算机(取决于计算机的网络缓冲区的大小),并将被缓冲在OS中的某个位置,直到Java进程请求为止它。