如何使用JCIFS库高效验证大量文件的存在?

发布于 2024-10-26 10:31:07 字数 486 浏览 4 评论 0原文

我有一个进程读取数据库来收集大约 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉宸 2024-11-02 10:31:07

你绝对应该使用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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文