gpt4 book ai didi

java - 为什么要向 Java BufferedOutputStream.write 传递偏移量参数?

转载 作者:行者123 更新时间:2023-12-01 20:20:27 31 4
gpt4 key购买 nike

我不太明白为什么您想要通过方法 public void write(byte[] b, int off, int len) 将偏移参数传递给 Java BufferedOutputStream.write ?您可能希望从 b 参数的非零偏移量开始的用例是什么?尽管你可以做到,但我不明白你为什么想要这样做。据我所知,99% 的时间都没有必要使用它?

最佳答案

假设我有一个包含图像的 20M 字节数组,并且我想通过网络发送该图像的数据。 (假设我正在编写一个 HTTP 服务器。)网络缓冲区只有这么大 - 我可能希望将图像数据以更易于管理的方式写入 TCP 管道。 (4k?)

有了这个偏移量,我就不必进行大量数组复制。所以我可以这样使用它:

byte[] image = loadImage();
int chunkSize = 4096; // 4k
int chunks = image.length / chunkSize;
for (int i=0; i<chucks; ++i) {
os.write(image, i*chunkSize, chunkSize);
}

请注意,每次调用 write 时都会传递相同的字节数组。它只是阅读其中的不同部分。

免责声明:这个例子过于简化,忽略了图像末端与卡盘不对齐的处理,但这并不重要。

关于java - 为什么要向 Java BufferedOutputStream.write 传递偏移量参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44855368/

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