gpt4 book ai didi

java - Java 中 ByteArrayOutputStream 的环形缓冲区

转载 作者:行者123 更新时间:2023-11-30 07:36:21 25 4
gpt4 key购买 nike

我正在寻找类似 ByteArrayOutputStream 但大小有限的东西。如果超过大小,则应覆盖较旧的数据。据我所知,这是一个环形缓冲区。有什么想法吗?

最佳答案

其实没什么。你可以自己做。这是一个开始:

class ByteArrayRingBuffer extends OutputStream {

byte[] data;
int capacity, pos = 0;
boolean filled = false;

public ByteArrayRingBuffer(int capacity) {
data = new byte[capacity];
this.capacity = capacity;
}

@Override
public synchronized void write(int b) {
if (pos == capacity) {
filled = true;
pos = 0;
}
data[pos++] = (byte) b;
}

public byte[] toByteArray() {
if (!filled)
return Arrays.copyOf(data, pos);
byte[] ret = new byte[capacity];
System.arraycopy(data, pos, ret, 0, capacity - pos);
System.arraycopy(data, 0, ret, capacity - pos, pos);
return ret;
}
}

(如果您需要效率,您可能想要覆盖 write(byte[] b, int off, int len)。)

关于java - Java 中 ByteArrayOutputStream 的环形缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3651435/

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