问题
Are there any circumstances where FileChannel.size()
and File.length()
will be different? Please see the code example below:
File file = new File(name);
FileInputStream stream = new FileInputStream(file);
FileChannel channel = stream.getChannel();
long channel_size = channel.size();
long file_length = file.length();
回答1:
They can be different because the new File(name).length()
always checks the path given. When you use FileInputStream
, you attach to that file regardless of what happens to it.
For example, in Linux you can rename, replace or delete a file which is in use. The FileInputStream
will continue to give the original file's size whereas the File
will give you what replaced it, if any.
来源:https://stackoverflow.com/questions/21293031/java-filechannel-size-vs-file-length