gpt4 book ai didi

java - Android ByteArrayBuffer 持有的字节多于容量

转载 作者:行者123 更新时间:2023-11-30 03:01:46 24 4
gpt4 key购买 nike

我在一个项目中找到了如下代码。它可以读取超过 20MB 的大文件。从代码的设置来看,它应该在 5000 字节后失败。为什么它有效? ByteArrayBuffer 的文档没有这样的指示。我已验证读取循环对每个文件的所有字节进行迭代。

http://developer.android.com/reference/org/apache/http/util/ByteArrayBuffer.html

        URLConnection ucon = url.openConnection();
ucon.setReadTimeout(10000); // enables throw SocketTimeoutException
InputStream is = ucon.getInputStream();

long expectedFileSize = ucon.getContentLength();
Log.d("Downloader", "expected file size: " + expectedFileSize);

BufferedInputStream bis = new BufferedInputStream(is);

// Read bytes to the Buffer until there is nothing more to read(-1).
// This code can read 20MB and bigger mp3-files, ... why?!?
ByteArrayBuffer baf = new ByteArrayBuffer(5000);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}

FileOutputStream fos = new FileOutputStream(file);
fos.write(baf.toByteArray());
fos.flush();
fos.close();

最佳答案

5000只是一个初始容量。一旦达到限制,它会自动调整大小

关于java - Android ByteArrayBuffer 持有的字节多于容量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22407411/

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