Android下载二进制文件问题
我在从互联网下载我的应用程序中的二进制文件时遇到问题。在Quicktime中,如果我直接下载它,则可以正常工作,但是通过我的应用程序,它会以某种方式混乱(即使它们在文本编辑器中看起来完全一样)。这是一个例子:
URL u = new URL("http://www.path.to/a.mp4?video"); HttpURLConnection c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
FileOutputStream f = new FileOutputStream(new File(root,"Video.mp4"));
InputStream in = c.getInputStream();
byte[] buffer = new byte[1024];
int len1 = 0;
while ( (len1 = in.read(buffer)) > 0 ) {
f.write(buffer);
}
f.close();
回答:
我不知道这是否是唯一的问题,但是你在其中遇到了典型的Java故障:你没有指望总是允许read()返回的字节数少于你要求的字节数。因此,你的读取可能会少于1024个字节,但是你的写入操作始终会精确地写出1024个字节,其中可能包括上一个循环迭代中的字节。
更正为:
while ( (len1 = in.read(buffer)) > 0 ) { f.write(buffer,0, len1);
}
也许更高的延迟网络或Android上3G的较小数据包大小加剧了这种影响?
以上是 Android下载二进制文件问题 的全部内容, 来源链接: utcz.com/qa/419960.html