如何使用JCIFS库高效验证大量文件的存在?
我有一个进程读取数据库来收集大约 200,000 个文件(并且还在不断增长)的服务器和路径信息。我使用 JCIFS 库一次检查文件是否存在于指定位置,使用类似以下内容:
SmbFile file = new SmbFile(fullPath, getNtlmPasswordAuthentication());
if(file.exists()) {
return true;
}
完成该过程需要几个小时。我正在努力寻找一种方法来加快这一过程。需要验证的文件分布在 40 个目录中。每个目录可以包含数千个文件。 SmbFile API 有一个 listFiles() 函数允许我打开一个目录并获取该文件夹中的 SmbFile 数组。我想知道我是否走在正确的轨道上,是否有人有更好的主意。谢谢!
I have a process that reads database to gather the server and path information of about 200,000 files (and growing). I used JCIFS library to check if the file exists on the designated location one at a time using something like:
SmbFile file = new SmbFile(fullPath, getNtlmPasswordAuthentication());
if(file.exists()) {
return true;
}
It takes couple hours to complete the process. I'm trying to find a way to speed up the process. The files needed to be verified spread over 40 directories. Each directory can contain couple thousand of files. The SmbFile API has a listFiles() function that allows me to open a directory and get back an array of SmbFile in that folder. I wonder if I'm on the right track and if anyone has better idea. Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你绝对应该使用listFiles()。如果我理解正确的话,你的方法会产生一个每个文件的请求,而 listFiles() 会给你一个每个目录的请求 - 我预计速度会提高 1000 倍左右
Absolutely you should use listFiles(). If I'm understanding things correctly, your approach results in a request-per-file, and listFiles() will give you a request-per-directory - I'd expect speed up of x1000 or so