谷歌搜索时,我发现使用java.io.File#length()可能很慢。 FileChannel有一个size()方法也可用。在java中有一种有效的方法来获取文件大小吗?
3 回答

一只甜甜圈
TA贡献1836条经验 获得超5个赞
本文中的所有测试用例都存在缺陷,因为它们为每个测试方法访问相同的文件。因此,磁盘缓存会在测试2和3中受益。为了证明我的观点,我采用GHAD提供的测试用例并更改了枚举的顺序,以下是结果。
看结果我认为File.length()真的是赢家。
测试顺序是输出的顺序。您甚至可以看到我的机器所执行的时间在执行之间有所不同,但File.Length()不是第一次,并且赢得了第一次磁盘访问。
---
LENGTH sum: 1163351, per Iteration: 4653.404
CHANNEL sum: 1094598, per Iteration: 4378.392
URL sum: 739691, per Iteration: 2958.764
---
CHANNEL sum: 845804, per Iteration: 3383.216
URL sum: 531334, per Iteration: 2125.336
LENGTH sum: 318413, per Iteration: 1273.652
---
URL sum: 137368, per Iteration: 549.472
LENGTH sum: 18677, per Iteration: 74.708
CHANNEL sum: 142125, per Iteration: 568.5
添加回答
举报
0/150
提交
取消