如何将 OutputStream 转换为字节数组?我发现首先需要将此 OutputStream 转换为 ByteArrayOutputStream。这个 OutputStream 类中只有 write() 方法,我不知道该做什么。有什么想法吗?
原文由 hellzone 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何将 OutputStream 转换为字节数组?我发现首先需要将此 OutputStream 转换为 ByteArrayOutputStream。这个 OutputStream 类中只有 write() 方法,我不知道该做什么。有什么想法吗?
原文由 hellzone 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果提供的 OutputStream
对象还不是 ByteArrayOutputStream
,可以 wrap
它在委托类中,提供给 write()
字节 ---
方法,例如
public class DrainableOutputStream extends FilterOutputStream {
private final ByteArrayOutputStream buffer;
public DrainableOutputStream(OutputStream out) {
super(out);
this.buffer = new ByteArrayOutputStream();
}
@Override
public void write(byte b[]) throws IOException {
this.buffer.write(b);
super.write(b);
}
@Override
public void write(byte b[], int off, int len) throws IOException {
this.buffer.write(b, off, len);
super.write(b, off, len);
}
@Override
public void write(int b) throws IOException {
this.buffer.write(b);
super.write(b);
}
public byte[] toByteArray() {
return this.buffer.toByteArray();
}
}
为了减少开销,可以省略上面类中对 super
的调用——例如,如果只需要“转换”为字节数组。
可以在 另一个 StackOverflow 问题 中找到更详细的讨论。
原文由 PNS 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答1.6k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
4 回答2.1k 阅读
2 回答792 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.4k 阅读
创建一个
ByteArrayOutputStream
。通过调用
toByteArray()
其内容参考