gpt4 book ai didi

java - Android下载二进制文件问题

转载 作者:IT老高 更新时间:2023-10-28 13:13:30 32 4
gpt4 key购买 nike

我在从 Internet 下载我的应用程序中的二进制文件(视频)时遇到问题。在 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 数据包大小会加剧这种影响?

关于java - Android下载二进制文件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/576513/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com