Вопрос

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();
Это было полезно?

Решение

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top