2010-11-05 39 views
5

我正在写一个应用程序,它会进行数百万次计算,并将结果存储在光盘中的许多文件中。我可能有数千个不同大小的文件,并存储直到他们进行分析。在此之后,我将只保留其中的几个,删除其他人并重新开始整个过程​​。为了我的应用程序,这个工程很好,但现在我开始担心我会像疯了一样将我的光盘碎片化(我的光盘使用NTFS)。定期对磁盘驱动器进行碎片整理不在我的控制之下,因为我不是机器的管理员。如何避免硬盘碎片?

有什么办法避免光盘碎片?

回答

1

试着制作自己的文件格式来收集几个文件在一起?

4

碎片小文件通常不是问题。 如果文件被读取一次并不重要 - 如果一个大文件存在很多部分,并且磁盘必须做大量的搜索来获取所有文件,那么这只是真正的时间问题。

显而易见的解决方案不是写很多小日志文件,要么将它们合并成一个大文件 - 要么使用数据库,这就是它们的用途。

3

使用一个数据库,它是为这种事情做的。

1

我个人认为,作为一名程序员,您不应该担心操作系统级别的问题,例如太多,除非您正在开发嵌入式平台。 (例如,你怎么知道目标操作系统的下一个版本不会为你解决问题?)

但是,如果使用数据库不是一个选项(它看起来像一个非常明显的解决方案那么说)你可以把数据写入更少,更大的文件。

0

如何创建一个不同的分区供您的程序使用?然后你可以在分区上做任何你想要的东西(D :),然后在应用程序的关键运行之间吹掉它(而不是浪费时间进行碎片整理)。更好的是,只需将应用程序写入外部驱动器,使其完全远离主系统即可。

+0

请阅读http://meta.stackexchange.com/questions/28416/what-is-the-policy-on-signatures-and-links-in-answers-for-so-so-questions。另外,正如meta的其他地方指出的那样,“嗯,你知道答案中的链接是没有意义的,对不对?” – 2010-11-05 16:55:01

1

如果您的文件小于4096字节,NTFS格式化分区上将不会有任何碎片。如果是4KB,NTFS的簇大小,即使是1字节的文件也会在磁盘上使用4KB。只要看看任何文件的文件属性。磁盘上有大小和大小的属性。