RandomAccessFile vs FileChannel.open(path);

时间:2013-05-09 15:09:35

标签: java io nio

FileChannel方法返回什么类型的FileChannel.open(path)对象?

是否仍然允许随机访问,如同以下一样?

RandomAccessFile ra = new RandomAccessFile("RandomIndeed","rw");
    FileChannel fc1 = ra.getChannel();

fc1与以下实例fc之间的区别是什么:

FileChannel fc = FileChannel.open(path);

基本上我想知道上面创建的2个对象之间的差异,因此fc1fc

提前致谢。

1 个答案:

答案 0 :(得分:1)

FileChannel实例获取的RandomAccessFile实例带有已创建对象的随机访问行为,在这种情况下,fc1ra对象同步。您可以在javadoc

中看到它的描述
  

更改频道的位置,无论是明确还是通过阅读或   写入字节,将改变原始文件的位置   对象,反之亦然。通过文件更改文件的长度   通道将改变通过原始对象看到的长度,并且   反之亦然。通过写入字节来更改文件的内容将会改变   原始对象看到的内容,反之亦然。

但是使用FileChannel创建的FileChannel.open()实例fc没有此行为。这适用于您从Streams获得的FileChannel个实例。它只保证文件视图在同一程序创建的对象之间是一致的。希望这对你有帮助。