【问题标题】:FileChannel vs RandomAccessFile [closed]FileChannel vs RandomAccessFile [关闭]
【发布时间】:2013-05-05 22:25:53
【问题描述】:

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

【问题讨论】:

  • 就我个人而言,我一直发现 nio API 难以理解和使用......而 RandomAccessFile API 更熟悉流式。当然,这只是一个意见问题,这就是为什么我没有将其添加为答案的原因。这感觉像是一个非常主观的问题。

标签: java io nio


【解决方案1】:

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

通道属于所谓的非阻塞 IO,它允许读取(和写入)字节而不被阻塞。 RandomAccessFileFileChannel 之间的唯一关系是您可以通过随机访问文件访问频道。

【讨论】:

  • “但是读写操作被阻塞,例如,如果你调用 read 方法,它会被阻塞,直到读取字节”。 ?你能再给我一个现实生活中的例子吗?
  • -1 FileChannel 也被阻塞。它只是随机文件的接口和使用 ByteBuffer 而不是 byte[],但两者都像地狱一样阻塞。
  • AlexR,您一定在想AsynchronousFileChannel,从技术上讲,它是“异步”的,而不是您可以使用Selector 从套接字通道和管道获得的非阻塞模式。跨度>
  • @MartinAndersson,10 倍澄清。我真的不记得我在 3.5 年前写这个答案时的确切意思。
  • 如果这不是答案(如我所见 -ve 投票),那么正确答案是什么?
猜你喜欢
  • 1970-01-01
  • 2013-05-04
  • 2011-06-13
  • 2013-05-02
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
相关资源
最近更新 更多