更快的是重命名文件、更改文件中的属性或在文件夹之间移动文件
本文关键字:文件 文件夹 移动 之间 属性 重命名 | 更新日期: 2023-09-27 18:00:19
我正在开发一个文件系统管理器模块,想知道什么是更有效的方法。
这将在带有NTFS的Windows计算机上。
该模块需要将在特定目录上创建的新文件通知另一个模块,并维护该文件的某种状态,以便可以删除已处理的文件,如果失败,将再次处理未处理的文件。
我想到的是,当文件的状态发生变化时,在目录之间移动文件,或者根据文件的状态重命名文件,或者将文件属性更改为其状态的标志。
考虑到在短时间内创建大量文件的可能性,我想知道什么是最有效的方法。
我不能完全回答你的问题,但要给出一些一般的提示。最重要的是,你的问题的答案可能很大程度上取决于底层文件系统(NTFS、FAT32等)
重命名或移动同一分区上的文件通常意味着目录条目发生了更改。实际文件内容无需触摸。一旦将文件移动到不同的分区或硬盘驱动器,也必须复制实际的文件内容,这需要花费更多的时间。
话虽如此,我通常认为重命名为比将文件移动到另一个目录(在同一分区上)稍微快,因为只有一个目录而不是两个目录受到影响。我也不太确定你所说的更改文件"属性"是什么意思——然而,如果你谈论的是例如设置文件的"归档"标志,或使文件"只读",如果目录条目可以原位更改,而不是用不同大小的新条目替换,这可能会比重命名快一点。
再次:请谨慎对待我的假设,因为这一切都取决于特定的文件系统。(例如,在UNIX文件系统上隐藏一个文件通常意味着重命名它——在名称前加一个.
——但对于典型的DOS/Windows文件系统,情况并非如此。)
Renaming took: 1498.8166
ApplyAttribute took: 340.5407
Transfer took: 2527.6837
Transfer took: 3933.4944
ApplyAttribute took: 419.635
Renaming took: 1384.0079
测试了1000个文件。运行两次测试以确保没有缓存。
编辑:讨厌的错误已经修复,对不起。
使用属性。
为什么要将这些信息直接存储在文件系统中?我建议使用SQL数据库来跟踪这些文件。这样,您就可以避免修改文件系统,它可能会更快,而且如果需要,您可以轻松地获得更多关于文件的信息。
此外,拥有一个包含大量文件的文件夹本身可能会很慢,所以如果这对你来说有意义的话,你可以考虑为这些文件拥有更多的文件夹。