-1

我知道当一个文件被分配到一个文件系统上时,例如 NTFS 或 FAT32,文件系统会为它分配一些簇/扇区。文件分配后,是否有工具可以将分配给文件的簇从一个位置移动到另一个位置,并更新文件系统元数据?这就像手动对文件进行碎片整理一样。

4

1 回答 1

0

引用 MSDN: http: //msdn.microsoft.com/en-us/library/windows/desktop/aa363911 (v=vs.85).aspx

对文件进行碎片整理 使用 FSCTL_GET_VOLUME_BITMAP 控制代码在卷上找到一个足以容纳整个文件的位置。注意 如有必要,请移动其他文件以腾出足够大的位置。理想情况下,文件的第一个扩展区之后有足够的未分配簇,您可以将后续扩展区移动到第一个扩展区之后的空间中。使用 FSCTL_GET_RETRIEVAL_POINTERS 控制代码获取磁盘上文件当前布局的映射。遍历 FSCTL_GET_RETRIEVAL_POINTERS 返回的 RETRIEVAL_POINTERS_BUFFER 结构。使用 FSCTL_MOVE_FILE 控制代码在您走动结构时移动每个集群。注意您可能需要更新位图或检索结构,或在其他进程写入磁盘时在不同时间更新两者。

于 2014-11-03T20:02:22.703 回答