【问题标题】:How do I check if there is a duplicate file in a folder, without comparing file names using glob/listdir/etc..?如何在不使用 glob/listdir/etc 比较文件名的情况下检查文件夹中是否存在重复文件?
【发布时间】:2019-11-17 17:05:56
【问题描述】:

我有一个包含多张图片的文件夹,目录结构如下:

./images/
./images/1.png
./images/2.png
./images/3.png
./images/4.png
./images/{n}.png

这些图像已通过名为update.js 的脚本使用requestfs 模块下载和保存。

每个文件都以文件夹中项目的长度命名(IE:长度+1)。

update.js 脚本会下载(并保存)每个图像,无论它是否存在。

我可以通过删除images 文件夹来解决这个问题,但这很浪费资源。

防止这种行为最有效的方法是什么?

注意:我不能使用简单的文件名检查,因为名称是索引。

谢谢。

【问题讨论】:

    标签: javascript node.js image file file-io


    【解决方案1】:

    您可以为每个文件发出 HTTP 头请求并获取其头。然后你可以看到目标文件有多大,如果大小完全匹配,就避免重新下载。

    这并不理想,因为不同的文件可能具有相同的大小。

    有些服务器会为您提供可能是最好的内容 md5。除非您的用例非常大,否则 md5 不太可能在您拥有的任何两个文件之间匹配。

    您最好只修复脚本,以便它存储正确的元数据,所有这些都非常hacky :)。您可以将真实文件名和修改后的时间戳作为另一个文件存储在同级目录中,并确保它不会影响任何内容。然后,您可以在下载之前检查这些内容。

    【讨论】:

    • 谢谢,我不知道为什么我没有想到这个!我已经实现了一个基本的md5 哈希检查器,并且在所有测试用例中,它成功地阻止了脚本下载重复文件。
    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 2019-07-26
    • 2018-12-26
    • 2015-09-14
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多