几天前,我遇到了一个让我头疼的严重问题:
所有基于 Java 的工具(Eclipse、Maven、Android SDK 加载器...)在下载某些文件时都存在问题:下载只是随机停止。
我已经在超级用户处描述了我的问题,但没有人能够帮助我解决我的问题。因此开始自己执行一些测试,并在这个问题的末尾得到了示例代码。
有趣的是缓冲区大小对问题的影响很小。如果我将缓冲区大小减小到 1024,则在大多数情况下下载完成。
这段代码只会在我的 Windows 系统上出现问题吗?
明确一点:我不想用 Java 开发下载程序 - 因此修复示例代码对我没有帮助 - 代码仅用于演示问题。
public static void main(String[] args) {
try {
URL url = new URL("http://mirror.netcologne.de/maven2/com/google/android/android/2.3.3/android-2.3.3.jar");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream in = conn.getInputStream();
byte[] buffer = new byte[10485760]; // 10MiB
long read = 0;
while (true) {
int bytes = in.read(buffer, 0, buffer.length);
if (bytes < 0)
break;
read += bytes;
System.out.println("Bytes read: " + read);
}
conn.disconnect();
System.out.println("Finished");
} catch (Exception e) {
e.printStackTrace();
}
}