Java FileChannel.size() 与 File.length()

标签 java file io stream channel

是否存在 FileChannel.size()File.length() 不同的情况?请参阅下面的代码示例:

File file = new File(name);
FileInputStream stream = new FileInputStream(file);
FileChannel channel = stream.getChannel();
long channel_size = channel.size();
long file_length = file.length();

最佳答案

它们可以不同,因为 new File(name).length() 始终检查给定的路径。当您使用 FileInputStream 时,无论发生什么情况,您都会附加到该文件。

例如,在 Linux 中您可以重命名、替换或删除正在使用的文件。 FileInputStream 将继续提供原始文件的大小,而 File 将提供替换它的内容(如果有)。

关于Java FileChannel.size() 与 File.length(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21293031/

相关文章:

java - 为什么对于某些文件,getResourceAsStream()和使用FileInputStream读取文件会返回不同长度的数组?

java - 使用 Java nio files walk() 读取文件

java - 我可以使用 Ant 检测我是否在 Linux 系统(而不是通用 Unix 系统)上吗?

java - 外键约束失败 - hibernate

Java 文件 IO 写入

java - 运行显示输出/解析命令的 .jar 文件

c++ - C/C++ 获取按键而不轮询

Java - 高效处理文件上传并创建新的http请求

python - 从 Python 中打开的 Excel 文件中读取

C++ 逐行读取文件但行类型为 CString 或 TCHAR