【发布时间】:2012-06-30 12:23:27
【问题描述】:
我希望覆盖已经存在的文件的内容。显然,我可以根据this answer 创建一个覆盖旧文件的新文件。但是,我正在编写一个可能会多次执行此操作的程序,并且我想尽可能减少不必要的开销。
所以我的问题是:有没有更好的方法来简单地重写文件本身的内容,而不是编写一个替换旧文件的“新”文件?还是简单地覆盖整个文件内容的开销大致相当于创建新文件然后写入它的开销? (为了记录,这些文件只有 1 KB 大。)
【问题讨论】:
-
您确实了解文件是如何存储在磁盘上的,以及这如何限制了它们的处理方式,对吗?
-
我不确定我是否明白你在问什么。我有一定程度的了解,但我不会说我是磁盘数据存储方面的专家。我在二年级和三年级之间是一名计算机科学专业的学生(不过这不是家庭作业),所以我们已经介绍了一些文件存储,但在我的课程中并没有太多。
-
用Redis这样的数据库或键值存储代替文件怎么样?
-
@cpeisert 不幸的是,我能做的有点有限——我的程序调用了另一个程序,该程序将某种格式的文件作为输入。所以我需要编写一组文件,在每个文件上调用第二个程序,获取结果,更改文件内容,然后再做一次;它是遗传算法的一部分。但是,我根本无法更改其他程序,所以我基本上必须将其视为黑匣子。
-
@Donal:当您有几百万个时,担心可能是有道理的……还记得在优化文件系统和 NNTP 服务器的挂载选项方面付出了多少努力吗? :)