Mar*_*mus 0 java filesystems performance java-7
我在'旧'方式和'新'更快的1.7方式扫描目录之间处于两难境地.
我需要扫描驱动器上的所有目录并构建类似的树结构.在1.6中没有问题(除了它慢了10倍),但是使用FileFisitor我有一些很大的障碍.
我如何预先知道目录包含多少项(文件+子目录)?
File[] files = path.listFiles();和files.length就是答案.public FileVisitResult preVisitDirectory(Path path, BasicFileAttributes bfa){},计数在哪里?对每个子目录使用可伸缩数组(ArrayList)肯定会损害性能和已经很大的内存占用,因此我需要使用常规的固定长度数组.我一直在思考的另一种方法是使用可重用的主数组,一旦我知道了长度,就将其复制到目标数组.然而,这与递归性质以及目录和文件交错而不是分组的事实相冲突.我需要一个主数组用于每个递归深度(可能是无限的),除非我可以首先使它成为walk目录,然后是文件(我的研究表明无法完成).
我真的会质疑这个假设:
对每个子目录使用可伸缩数组(ArrayList)肯定会损害性能和已经很大的内存占用
你有什么基础?请注意,您的性能可能会受到访问文件系统的速度的限制(或至少受到影响).
我认为(至于大多数问题,这种性质)你尝试一个简单的可扩展解决方案,并确定任何真实的问题,而不是提前做出假设.
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |