下载Java文件和常见错误

下载Java文件和常见错误,java,download,applet,io,Java,Download,Applet,Io,我编写了一个简单的下载程序作为Javaapplet。在一些测试中,我发现我下载文件的方式甚至没有Firefox的一半完美 我的代码: InputStream is = null; FileOutputStream os = null; os = new FileOutputStream(...); URL u = new URL(...); URLConnection uc = u.openConnection(); is = uc.getInputStream(); final byte[]

我编写了一个简单的下载程序作为Javaapplet。在一些测试中,我发现我下载文件的方式甚至没有Firefox的一半完美

我的代码:

InputStream is = null;
FileOutputStream os = null;
os = new FileOutputStream(...);
URL u = new URL(...);
URLConnection uc = u.openConnection();
is = uc.getInputStream();
final byte[] buf = new byte[1024];
for(int count = is.read(buf);count != -1;count = is.read(buf)) {
    os.write(buf, 0, count);
}
有时我的小程序工作正常,有时会发生意想不到的事情。例如,在下载过程中,Applet会抛出一个IO异常,或者只是暂时失去连接,不可能返回到当前下载并完成它。
我知道真正高级的方式对于一个没有经验的Java程序员来说太复杂了,但也许你们知道一些技术来降低出现这些问题的风险。

所以你们想继续下载

如果从URL读取时出现IOException,则表明连接存在问题。 这种情况经常发生。现在,您必须注意您已经下载了多少,并打开一个从那里开始的新连接


要做到这一点,请在第二个字段中使用
setRequestProperty()
,并发送“我只需要以…”开头的资源范围”的正确标题字段。请参阅HTTP 1.1规范中的。不过,您应该检查响应上的标题字段,看看是否真的返回了一个范围。

所以您想继续下载

如果从URL读取时出现IOException,则表明连接存在问题。 这种情况经常发生。现在,您必须注意您已经下载了多少,并打开一个从那里开始的新连接


要做到这一点,请在第二个字段中使用
setRequestProperty()
,并发送“我只需要以…”开头的资源范围”的正确标题字段。请参阅HTTP 1.1规范中的。您应该检查响应上的标题字段,看看是否真的返回了一个范围。

您得到了什么I/O异常?Blahblahblahblahblahblah--堆栈跟踪在哪里?甚至没有一半完美-如何衡量完美?(开玩笑)我没有写下来-对不起。这种情况经常发生。你会遇到什么I/O异常?布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉——堆栈跟踪在哪里?甚至没有一半完美——你如何衡量完美?(开玩笑)我没有写下来-对不起。这只是偶尔发生的事。非常感谢。我会用的。但我能做些什么来防止和减少错误的数量呢?我考虑过设置更长的等待服务器数据的时间。在URLConnection上有一个
setReadTimeout
方法,这可能会有所帮助。我从来没有遇到过真正的问题,这可能是因为我有一个良好的互联网连接,很少使用URLConnection。非常感谢。我会用的。但我能做些什么来防止和减少错误的数量呢?我考虑过设置更长的等待服务器数据的时间。在URLConnection上有一个
setReadTimeout
方法,这可能会有所帮助。我从来没有遇到过真正的问题,这可能是因为我有一个良好的互联网连接,很少使用URLConnection。