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

回到顶部