What kind of FileChannel
object does the FileChannel.open(path)
method return?
Is it still random access allowed as if it was as following?
RandomAccessFile ra = new RandomAccessFile("RandomIndeed","rw");
FileChannel fc1 = ra.getChannel();
What's the difference between fc1
and the following instance fc
:
FileChannel fc = FileChannel.open(path);
Basically I would like to know what will be the differences between the 2 objects above-created, hence fc1
and fc
Thanks in advance.
The FileChannel
instance got from RandomAccessFile
instance carries the random access behaviour of the object it's been created, in this case fc1
is synced with ra
object. You can see it's described in javadoc
Changing the channel's position, whether explicitly or by reading or writing bytes, will change the file position of the originating object, and vice versa. Changing the file's length via the file channel will change the length seen via the originating object, and vice versa. Changing the file's content by writing bytes will change the content seen by the originating object, and vice versa.
However the FileChannel
instance which is created using FileChannel.open()
which is fc
doesn't have this behaviour. This is true for the FileChannel
instances you got from Streams. It only guarantees that the view of the file is consistent among the objects created by the same program. Hope this might help you.
i think the answer depends on the version of jdk
before jdk7,they are different on the randomAccess function
but after jdk7(included), they are same;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.