gpt4 book ai didi

java - Byte[] 用作 BufferInputStream 可以,但是

转载 作者:行者123 更新时间:2023-12-01 23:49:46 25 4
gpt4 key购买 nike

好吧,我知道缓冲区实际上是一个字节数组,但是我从未见过以下声明(取自 here )

URLConnection con = new URL("http://maps...").openConnection();
InputStream is = con.getInputStream();
byte bytes[] = new byte[con.getContentLength()];
is.read(bytes);

这是避免使用 BufferInputStream 对象的正确方法吗?这里我们有一个从字节[]读取的无缓冲流?不应该是相反吗?提前致谢。

最佳答案

不,这不是正确的方法。方法 read() 最多读取 N 个字节,其中 N 是数组的长度。如果没有更多字节可用,它可以读取更少的字节(甚至 0)。已读取的字节数由方法 read() 返回。当到达流末尾时,该方法返回-1

因此正确的方法是循环读取字节:

byte[] buf = new buf[MAX];
int n = 0;
while ((n = stream.read(buf)) >= 0) {
// deal with n first bytes from buf
}

关于java - Byte[] 用作 BufferInputStream 可以,但是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16469374/

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