Java 内存中字节数组的RandomAccessFile-like API?
我需要将使用Java 内存中字节数组的RandomAccessFile-like API?,java,Java,我需要将使用RandomAccessFile的代码替换为使用内存字节缓冲区的代码(例如byte[]或类似ByteArrayInputStream)。是否有一些API(字节数组包装器?)的接口类似于RandomAccessFile,带有seek()和streamishread(),我可以一对一地插入它们?我碰巧有一个——我上传了它——希望能有所帮助。我可以建议(新的I/O)检查简单和小教程可以做到: read() seek(n)可以替换为reset()后跟skip(n) 我也有同样的问题。 Ra
RandomAccessFile
的代码替换为使用内存字节缓冲区的代码(例如byte[]
或类似ByteArrayInputStream
)。是否有一些API(字节数组包装器?)的接口类似于RandomAccessFile
,带有seek()
和streamishread()
,我可以一对一地插入它们?我碰巧有一个——我上传了它——希望能有所帮助。我可以建议(新的I/O)检查简单和小教程可以做到:
read()
可以替换为seek(n)
后跟reset()
skip(n)
- 我也有同样的问题。
RandomAccessFile有许多finale和native方法,因此不能重载
我最终创建了自己的SeekableInputStream抽象类,并没有事先准备好:
我定义了SeekableFileInputStream,它使用RandomAccessFile
我定义了SeekableByteArrayInputStream,这很容易定义。
该类还可以获取任何InputStream,将其转换为字节数组,因此这是一种缓存流。除非您也需要写入,
DataInputStream
可以轻松包装以提供seek()
功能,其余功能已经存在。这不是一个完美的解决方案,但如果所有其他方法都失败了,那么实现起来就相对轻松。你能用一个临时文件来代替吗?也不错,但缺点是接口与RandomAccessFile大不相同。通过在DataInputStream之上构建,您可以得到一些实现DataInput的东西,并且使用RandomAccessFile作为DataInput的代码无需更改。joriki,DataInput
不提供seek()
,因此,传递给需要DataInput
的方法的RandomAccessFile
将不太可查找。是的,但您必须引入一个新的接口,该接口同时具有read()
和seek()
方法。现有的Java I/O接口(新的或旧的)都没有这样的接口。一旦有了这个接口,就必须创建两个实现:一个使用RandomAccessFile
,另一个使用ByteArrayInputStream
。