从远程地址复制文件似乎是松散的信息

时间:2014-07-04 08:44:51

标签: java file url download

我有一个程序从网页读取文件并将其写入文件。大部分时间这都很好,但有时文件会被破坏。我想这与网络问题有关。我该怎么做才能让我的代码更稳定?

String filename = "myfile.txt";
File file = new File(PROFilePath+"/"+filename);
//Open the connection
URL myCon = new URL("url to a page");
URLConnection uc = myCon.openConnection();
FileOutputStream outputStream = new FileOutputStream(file);

int read = 0;
byte[] bytes = new byte[1024];
while ((read = uc.getInputStream().read(bytes)) != -1) {
    outputStream.write(bytes, 0, read);
}
uc.getInputStream().close();
outputStream.close();

1 个答案:

答案 0 :(得分:0)

您没有对副本使用显式编码,只是复制所有字节并将这些字节写入文件,以后可能会使用不同的解码来读取这些字节。找到这个的简单方法是在发现“损坏”文件后比较远程地址处的文档字节和复制的文件。但是,您提供的信息不够详细,无法为您提供更具体的帮助。有没有一个示例文档,你有挣扎?查看this related question and answer以及this thread以深入讨论此问题。

关于您的怀疑:当您从远程地址读取时,连接不应该只是丢失字节。当你通过TCP(我猜URL的协议是HTTP)连接时,这将是一个非常严重的错误,其中丢失的包被自动补偿。如果连接断开,连接应该发出异常而不是静默失败。我认为这不是您错误的来源。