我知道在文件系统(例如NTFS或FAT32)上分配文件时,文件系统会为其分配一些群集/扇区。分配文件后,是否有工具可以将分配给文件的集群从一个位置移动到另一个位置,并更新文件系统元数据?这就像手动对文件进行碎片整理一样。
答案 0 :(得分: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控制代码在您遍历结构时移动每个群集。 注意当其他进程写入磁盘时,您可能需要在不同时间更新位图或检索结构,或两者都更新。