gpt4 book ai didi

java - Android - 文件下载问题 - 文件不完整

转载 作者:行者123 更新时间:2023-12-01 15:56:55 25 4
gpt4 key购买 nike

我检查了很多代码 fragment ,尝试过使用和不使用缓冲区,但我无法将整个文件下载到 SD 卡。我当前使用的代码是:

    try {
url = new URL("http://mywebsite.com/directory/");
} catch (MalformedURLException e1) { }

String filename = "someKindOfFile.jpg"; // this won't be .jpg in future

File folder = new File(PATH); // TODO: add checking if folder exist
if (folder.mkdir()) Log.i("MKDIR", "Folder created");
else Log.i("MKDIR", "Folder not created");
File file = new File(folder, filename);

try {
conn = url.openConnection();
is = conn.getInputStream();

BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
FileOutputStream fos = new FileOutputStream(file);
fos.write(baf.toByteArray());
fos.close();
is.close();
} catch (IOException e) { }

此代码在 SD 卡上创建目录,但仅下载 77 字节的文件。可能是什么问题?

最佳答案

这里的错误是他正在编写转换为 byte 数据类型的 count 变量,而不是从输入流读取的字节(这些字节应该存储在临时 byte[]缓冲区通过bis.read(buffer))正确的代码块应该是:

BufferedInputStream bis = new BufferedInputStream(is);
FileOutputStream fos = new FileOutputStream(file);
int current = 0;
byte[] buffer = new byte[1024];
while ((current = bis.read(buffer)) != -1) {
fos.write(buffer, 0, current);
}
fos.close();
is.close();

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

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