java - Java 中简单文件搜索的性能

标签 java performance file-io

我们运行的网络服务器必须从相当大的目录中提供文件,因此通过简单的通配符搜索(如“abcd*jklp*”)查找文件会产生严重的性能问题。

有没有办法(技巧或库)来加速 Java 中的文件搜索?如果没有,是否有一个简单的缓存解决方案,使得每次搜索仅执行一次,除非应用程序显式清空缓存?

最佳答案

当您的 Web 应用程序启动时(以及此后每隔 x 分钟)将您打算在静态变量中提供的每个文件缓存起来。当用户搜索特定文件时,搜索您的静态缓存,而不是在实际文件服务器上运行搜索。

如果您只允许搜索文件名,则缓存所有内容都非常有效。您可以将每个文件路径存储在列表/数组中。如果列表/数组已经排序,您可以使用二分搜索进行用户搜索查询。如果存在通配符,则生成正确的正则表达式。

对于文件内容的全文搜索,静态存储所有内容是不可行的。做一些懒惰的事情,例如使用数据库备份文件或购买 GSA http://www.google.com/enterprise/search/gsa.html 等搜索设备

关于java - Java 中简单文件搜索的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9383189/

相关文章:

java - 如何在java中发送text/html电子邮件?

performance - PostgreSQL 9.2 - Agg 查询速度慢,计数(distinct x)

c++ - 读取 Intel Hex 文件以对 C++ 进行排序

java - FileNotFoundException(系统找不到指定的路径)

c - 尝试读取目录中的文件并将其写入列表

java - 如何正确使用ActionListener?

java - 获取 Android 库中源代码的校验和

java - 在 Java EE 环境中测试乐观锁

wpf - 在DataGrid中绘制的快速轻量级方法

performance - 如果/否则性能