重命名,删除或更改文件路径的成本

时间:2012-12-18 07:00:12

标签: java linux file-io

deleterenamemove文件操作的费用是多少?哪一个最快?

我想使用java,文件由linux操作系统维护。

3 个答案:

答案 0 :(得分:2)

不可能说哪个更快,因为它取决于多种因素。 (它可能无关紧要......因为它们做了不同的事情,因此不可互换。)

然而:

  • 如果源位置和目标位置位于同一文件系统中,则重命名和移动通常是等效的。

  • 如果移动涉及在文件系统之间移动,那么它可能是最昂贵的。必须复制O(N)个字节。

  • 否则,删除可能是最贵的。操作系统需要更新父目录并将文件使用的所有光盘块标记为空闲。

  • 实际成本还取决于操作系统和所涉及的文件系统类型,以及(在某些情况下)涉及的文件大小 - 见上文。

答案 1 :(得分:1)

它取决于文件系统的实现细节。在大多数文件系统中,它应该是订单一,O(1),操作。

答案 2 :(得分:0)

重命名文件基本上只是以本地化方式更改路径,因此它应该与更改路径一样快。删除实际上只是意味着删除引用,所以它也应该相当快。

您应该看到运营成本显着增加的唯一情况是复制文件或将路径更改为其他分区/磁盘。这些情况实际上需要文件系统逐块复制文件。

实际需要多长时间在很大程度上取决于您使用的文件系统(ext3,ext4,FAT,...),当然还有硬盘和硬盘连接的速度(即你的主板)。

  • 如果您需要对问题做出明确答复,我认为您不能使用特定的测试设置来避免对其进行基准测试。