Question

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();
Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top