如何查询"磁盘大小"文件信息?

OnT*_*Fly 6 filesystems delphi winapi

我想重现在任一给定文件的Windows资源管理器 - >属性对话框 - >常规属性页中显示的行为.具体来说,我想重现"磁盘大小"字段的确切值.

Ken*_*ite 3

正如其他人所说,您需要使用GetFileInformationByHandleEx,但看起来您需要使用FILE_STANDARD_INFOor FILE_ID_BOTH_DIR_INFO。您想要的信息在AllocationSize每个成员中返回,但第二个用于目录句柄,列出其中的文件而不是目录本身(注意:不是递归,只是顶级)。为了使它更容易,FILE_STANDARD_INFO有一个Directory布尔值,所以如果您不确定,请先调用它。根据 的文档FILE_ID_BOTH_DIR_INFO

AllocationSize 包含指定为文件分配多少空间的值(以字节为单位)。该值通常是底层物理设备的扇区或簇大小的倍数。

这似乎给了你Size on Disk信息。

我还没有找到该FILE_ID_BOTH_DIR_INFO结构的 Delphi 翻译。困难似乎是最后一个成员 ,WCHAR FileName[1]它被描述为:

FileName[1]
包含文件名字符串的第一个字符。在内存中,后面跟着字符串的其余部分。

我不确定 Delphi 中会如何处理这个问题。