我正在尝试从互联网上读取远程二进制文件(例如图像),如下所示:
HttpURLConnection connection = (HttpURLConnection) myUrl.openConnection(); //myUrl - URL object pointing for some location
if(connection.getResponseCode() == 200){
File temp = File.createTempFile("blabla", fileName); //fileName - string name of file
FileOutputStream out = new FileOutputStream(temp);
int fileSize = Integer.parseInt(connection.getHeaderField("content-length"));
int counter = 0;
DataInputStream in = new DataInputStream(connection.getInputStream());
byte ch[] = new byte[1024];
System.out.println(counter);
while((counter += in.read(ch)) > 0){
out.write(ch);
if(counter == fileSize){
out.close();
break;
}
}
}
在本地或本地 Web 服务器 (localhost) 中,它可以完美运行。
但。然后 myUrl 是某个远程 Web 服务器上文件的 URL - 它返回意外结果。例如,从给定文件的来源看来,它似乎重复了一些包(我认为是因为以前的包损坏或某些包),并且由于这种重复,生成的文件通常比原始文件大 10%。因此文件已损坏,无法使用图像查看器正确打开。
我该如何解决这个问题?