FileChannel方法返回什么类型的FileChannel.open(path)对象?
它是否仍然允许随机访问,就好像它是如下所示?
RandomAccessFile ra = new RandomAccessFile("RandomIndeed","rw");
FileChannel fc1 = ra.getChannel();fc1和下面的实例fc有什么区别?
FileChannel fc = FileChannel.open(path);基本上,我想知道上面创建的两个对象之间的区别是什么,因此fc1和fc。
提前谢谢。
发布于 2013-05-09 15:46:49
从FileChannel实例获得的RandomAccessFile实例带有它所创建的对象的随机访问行为,在本例中,fc1与ra对象同步。您可以看到它是用javadoc描述的。
更改通道的位置,无论是显式的,还是通过读取或写入字节,都将改变原始对象的文件位置,反之亦然。通过文件通道更改文件的长度将改变通过原始对象看到的长度,反之亦然。通过写入字节来更改文件的内容将改变原始对象所看到的内容,反之亦然。
但是,使用FileChannel创建的FileChannel.open()实例(即fc )没有这种行为。对于从流中获得的FileChannel实例来说,这是正确的。它只保证文件的视图在由同一个程序创建的对象之间是一致的。希望这能帮到你。
发布于 2022-12-02 04:12:23
我认为答案取决于jdk的版本。
在jdk7之前,它们在randomAccess函数上是不同的
但在jdk7(包括)之后,它们是相同的;
https://stackoverflow.com/questions/16465088
复制相似问题