什么是落后在Windows磁盘碎片整理和磁盘检查逻辑?我可以使用C#代码怎么做呢?

有帮助吗?

解决方案

有关完整性起见,这里的碎片整理一个C#API包装:

http://blogs.msdn.com/jeffrey_wall/存档/ 2004/09/13 / 229137.aspx

使用这些API碎片整理(应该是)非常安全时下。你不应该能够破坏文件系统,即使你想。

商业碎片整理程序使用相同的API。

其他提示

在碎片整理文件 MSDN可能的API帮手。

您应该仔细考虑使用C#这个任务,因为它可能会出台一些不需要的开销用于编组到本地的Win32。

如果您不知道碎片整理的逻辑,如果你没有写文件系统自己,所以你不能权威性检查错误,为什么不启动新的进程中运行“磁盘碎片整理”和“CHKDSK” ?

标记Russinovich写了一篇文章深入了解Windows NT磁盘碎片整理一而以前这给了深入的细节。如果你真的想这样做,我真的建议你使用内置的设施进行碎片整理。更何况,最近的操作系统我从来没有见过一个需求,因为用户更在乎整理;它会自动按计划进行,并在NTFS乡亲MS是那个东西肯定比你更聪明(对不起,但他们现在这样做了一段时间,你不这样做)。

尽管它的重要性,文件系统是不超过一个数据结构,文件名映射到磁盘块的列表的更多。并跟踪元信息,如文件和保存文件(例如,目录)的列表特殊文件的实际长度。磁盘检查验证数据结构是一致的。也就是说,每一个磁盘块必须是免费分配给文件或属于一个单一的文件。它也可以检查某些情况下,一组磁盘块,似乎是,应该在一个目录中的文件,但并不出于某种原因。

碎片整理为约看着磁盘块分配给每个文件的列表。如果他们使用一组连续的块,而不是那些散布在磁盘上的文件通常加载速度更快。而且一般如果使用所有的磁盘块把自己局限到磁盘的单个congtiguous范围内的整个文件系统将执行最好的。因此,特技移动磁盘块周围安全地达到这一目的,同时不破坏文件系统。

这里的主要困难是在运行这些应用程序,同时一个磁盘在使用中。这是可能的,但一个人必须非常,非常,非常小心,不要做出某种明显或微妙无比的错误并摧毁大部分或全部文件。这是比较容易上的文件系统脱机工作。

在其他困难是处理文件系统的复杂性。例如,你好得多建设的东西,支持FAT32,而不是NTFS,因为前者是一个非常非常简单的文件系统。

只要你有低级别的块访问和处理并发问题的一些明智的方式(通过文件系统上的工作最好的处理时,不使用),你可以在C#中,Perl或者你的任何语言做到这一点等。

<强> BUT非常小心。程序会破坏整个文件系统的早期版本。后来的版本会做,但只在不起眼的情况。而用户如果破坏他们的数据变得非常生气和诉讼。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top