【发布时间】:2010-10-29 08:58:04
【问题描述】:
在我的应用程序中,随着时间的推移,我将小数据位收集到一个更大的文件中。结果,目标文件变得过度碎片化。使用 .NET 可以做些什么来限制输出文件的碎片?
【问题讨论】:
-
技术细节:32 位 Server 2003,16GB 输出文件大小,每个集群 4K,每个输入文件几 MB,观察到 30K 片段。
标签: c# .net file-io fragmentation
在我的应用程序中,随着时间的推移,我将小数据位收集到一个更大的文件中。结果,目标文件变得过度碎片化。使用 .NET 可以做些什么来限制输出文件的碎片?
【问题讨论】:
标签: c# .net file-io fragmentation
您可以故意以更大的块增加文件大小,并在内部监控当前使用的结束位置。这样,您就可以让系统更好地为您的文件分配连续空间。
【讨论】:
可靠地减少文件碎片的唯一方法是一次性为整个文件分配空间(用零填充文件的其余部分,作为填充符)。但这只有在您对文件的最终大小有所了解的情况下才能做到。
另一种选择是在每次增量期间将文件大小增加一个特定值(例如 100 MB)。这样您的碎片整理量就会减少。
【讨论】: