RandomAccessFile对于随机访问文件来说非常慢。您通常会读到有关在其上实现缓冲层的信息,但是无法在线找到执行此操作的代码。

所以我的问题是:你们知道此类的任何开源实现的人共享一个指针还是共享您自己的实现?

如果将这个问题证明是关于此问题的有用链接和代码的集合,那将是很好的,我敢肯定,该问题已被许多人共享,并且SUN从未对其进行适当解决。

请不要引用MemoryMapping,因为文件可能比Integer.MAX_VALUE大。

最佳答案

您可以使用以下代码从RandomAccessFile制作BufferedInputStream,

 RandomAccessFile raf = ...
 FileInputStream fis = new FileInputStream(raf.getFD());
 BufferedInputStream bis = new BufferedInputStream(fis);

注意事项
  • 关闭FileInputStream将关闭RandomAccessFile,反之亦然
  • RandomAccessFile和FileInputStream指向同一位置,因此从FileInputStream进行读取将使RandomAccessFile的文件指针前进,反之亦然

  • 可能您想使用它的方式可能是这样,
    RandomAccessFile raf = ...
    FileInputStream fis = new FileInputStream(raf.getFD());
    BufferedInputStream bis = new BufferedInputStream(fis);
    
    //do some reads with buffer
    bis.read(...);
    bis.read(...);
    
    //seek to a a different section of the file, so discard the previous buffer
    raf.seek(...);
    bis = new BufferedInputStream(fis);
    bis.read(...);
    bis.read(...);
    

    关于java - 缓冲RandomAccessFile java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5614206/

    10-10 02:59