我有一个库生成PDF文档并将其写入OutputStream
。 OutputStream
被传递给PDF库。我需要将结果数据存储在每个条目具有255字节的固定长度的List<byte[]>
中。 (我不能改变任何关于这个要求的内容,在评论中可以看到更多内容。)直接写入我的字节块列表的OutputStream
现在最简单的解决方案是使用ByteArrayOutputStream
并将结果字节数组写入(和拆分)到字节数组列表中。
但我想要一个更有效的解决方案,需要更少的内存。我希望输出流直接生成字节数组列表。
我的解决方案是扩展OutputStream
,覆盖write()
并将数据直接写入List<byte[]>
。
这需要一些努力(例如跟踪已收到的字节数),因此我想知道是否有使用其他可用的实现的更简单的解决方案。
E.g.不知何故,我想过使用BufferedOutputStream
,但我认为这是行不通的。基本思路是实现另一个OutputStream
,将它传递给BufferedOutputStream
,容量为255字节,并写入一个新的块条目,每次BufferdOutputStream
在缓冲区满时都将其刷新。我认为这不起作用,因为BufferedOutputStream
不再使用它的缓冲区了,如果一次写入太多的字节(据我了解它的源代码)。
为什么不做'List'? –
Shadov
定义'期望一个255字节块的列表'。不清楚你在问什么。 – EJP
@EJP一个'列表',每个'Byte []'条目的长度为255.(最后一个条目可以少于255个字节)。 @Whatzs是的,如果与目标服务器通信的框架不期望后者,我可以使用'byte []'而不是'Byte []'。 –
fishbone