Java,将文件流转换为随机访问文件



我需要在 2 个接口之间实现一个包装器,但我无法进行任何更改。基本上包装器需要将java风格的流文件访问转换为标准的C风格的fopen/fread/fwrite/文件访问(在java中实现)。

包装器必须实现调用方所需的随机文件访问方法,这意味着打开/读取/写入/关闭/查找/刷新/大小/截断;包装器必须调用一组标准的 java 文件流方法来馈送调用方,被调用方为我提供输入流和输出流。

我看到了java.io.RandomAccessFile,它将C样式转换为java流样式,我需要一些颠倒的东西。最困难的部分是 seek()。有什么好的(有效的)方法可以做到这一点。

随机访问流的唯一方法是将其缓冲在内存中(或作为磁盘上的副本)

我会建议要么

  • 将其读入 ByteArrayOutputStream 并将其转换为byte[]
  • 将流复制到临时文件(最好是 tmpfs 或 ram 驱动器),然后在该文件上使用 RandomAccessFile。

这很容易使用通道实用程序类来实现...

// STEP 1:  Create random access file read-only
RandomAccessFile raf = new RandomAccessFile("/text.txt", "r");
// STEP 2:  Use Channels to convert to InputStream
InputStream is = Channels.newInputStream(raf.getChannel());

相关内容

  • 没有找到相关文章

最新更新