我的应用扫描部分文件系统,我的用户报告说扫描网络驱动器时速度非常慢.测试我的代码,我确定的瓶颈:方法File.isFile(),File.isDirectory()以及File.isHidden(),这些都是调用fs.getBooleanAttributes(File f).在Windows网络驱动器上,此方法似乎非常慢.如何提高性能?我可以避免以某种方式调用此方法吗?
ska*_*man 10
防御性代码通常会调用这些isXYZ()方法,这通常是很好的做法.但是,正如您所发现的,有时性能很差.
另一种方法是假设文件是文件,存在,可见,可读等,只是尝试阅读它.如果它不是那些东西,你会得到一个例外,你可以捕获,然后做检查,找出到底出了什么问题.这样,你就可以针对常见情况进行优化(即一切都很好),并且只在出现问题时执行慢速操作.
你是如何建立这个文件列表的?除非你同时在系统上显示每个文件,否则你应该有一些选择......
也许如果您显示用于构建列表的代码,我们可以找到其他一些改进的方面.(为什么不能根据用于收集信息的方法推断出类型?如果你正在调用像GetFiles()这样的方法,你不知道返回的所有内容都是文件吗?)