文件通道与随机访问文件

Rol*_*all 5 java io nio

考虑到Java 7中的FileChannel实现了SeekableByteChannel接口。使用 RandomAccessFile 而不是 FileChannel 有什么用处吗?提前致谢。

Ale*_*exR -3

RadomAccessFileFileChannel完全不同的东西。 RandomAccessFile早在 NIO 之前就被引入 Java 了(例如通道)。当您必须在文件的指定位置(非顺序)读取和写入时,对文件进行操作非常有用。但是,读取和写入操作会被阻止,例如,如果您调用 read 方法,它将被阻止,直到读取字节。

通道属于所谓的非阻塞 IO,允许在不被阻塞的情况下读取(和写入)字节。RandomAccessFile和之间唯一的关系FileChannel是可以通过随机访问文件来访问通道。

  • -1 FileChannel 也被阻塞。它只是随机文件的接口,并使用 ByteBuffer 而不是 byte[],但两者都会阻塞。 (3认同)
  • AlexR,您一定正在考虑“AsynchronousFileChannel”,从技术上讲,它是“异步”的,而不是使用“Selector”从套接字通道和管道获得的非阻塞模式。 (2认同)
  • 如果这不是答案(正如我所看到的-ve票),那么正确的答案是什么? (2认同)