Java中的内存流??

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我正在寻找Java中的内存流实现。这个实现应该在.NET内存流(*)实现之后大致建模。

基本上我想有一个MemoryStream工厂方法的类:

 class MemoryStream {
     MemoryInput createInput();
     MemoryOutput createOutput();
 }

 class MemoryInput extends InputStream {
    long position();
    void seek(long pos);
 }

 class MemoryOutput extends OutputStream {
    long position();
    void seek(long pos);
 }

所以一旦我有了这个类的实例,MemoryStream我应该能够同时创建输入和输出流,这也应该允许定位在任何方向。内存流不必是循环的,它应该适用于小尺寸并自动增长。内存流只需要被限制在一个进程中。

任何可用的开箱即用代码?

(*).NET内存流 http://msdn.microsoft.com/en-us/library/system.io.memorystream.aspx

提问于
用户回答回答于

您可以使用PipedInputStream和PipedOutputStream

这个:

PipedOutputStream outstr = new PipedOutputStream();
PipedInputStream instr = new PipedInputStream(outstr);

这不会直接让您寻找,但它确实允许您从输入流中跳过所需的字节数。

请注意,无论何时写入超出范围,它都会被阻塞,直到从instr中读取所有内容为止(即:如果我没有记错的话,Streams不会缓冲,但可以用BufferedInputStream装饰它们,那么您不必打扰。

用户回答回答于

ByteArrayInputStream并且ByteArrayOutputStream你正在寻找什么。

这些是接口的实现InputStreamOutputStream从读取和写入到存储器中的字节数组。因为ByteArrayOutputStream,当您向数据流写入数据时,数组会自动增长。

扫码关注云+社区