4

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

是否仍然允许随机访问,好像如下所示?

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

fc1和以下实例有什么区别fc

FileChannel fc = FileChannel.open(path);

基本上我想知道上面创建的两个对象之间的区别是什么,因此fc1fc

提前致谢。

4

1 回答 1

2

FileChannelinstance 获得的RandomAccessFile实例带有它被创建的对象的随机访问行为,在这种情况下是与对象fc1同步的。ra您可以在 javadoc 中看到它的描述

更改通道的位置,无论是显式地还是通过读取或写入字节,都会更改原始对象的文件位置,反之亦然。通过文件通道更改文件的长度将更改通过原始对象看到的长度,反之亦然。通过写入字节更改文件的内容将更改原始对象看到的内容,反之亦然。

但是,使用whichFileChannel创建的实例没有这种行为。这对于您从 Streams 获得的实例来说是正确的。它只保证文件的视图在同一个程序创建的对象之间是一致的。希望这可以帮助你。FileChannel.open()fcFileChannel

于 2013-05-09T15:46:49.063 回答