在windows中获取文件大小

Get size of file in windows

本文关键字:文件大小 获取 windows      更新时间:2023-10-16

我找到了这个函数GetFileSizeEx(),它返回PLARGE_INTEGER中由结构联合形成的文件大小。

typedef union _LARGE_INTEGER {
  struct {
    DWORD LowPart;
    LONG  HighPart;
  } ;
  struct {
    DWORD LowPart;
    LONG  HighPart;
  } u;
  LONGLONG QuadPart;
} LARGE_INTEGER, *PLARGE_INTEGER;

这和我称之为结构的结构是一样的吗?我如何计算它返回的文件大小以及它可以处理多大的信息?

你可能误解了什么是union。通过

获取文件的长度。
LARGE_INTEGER  len_li;
GetFileSizeEx (hFile, &len_li);
int64 len = (len_li.u.HighPart << 32) | len_li.u.LowPart;

或者,您可以使用现代编译器直接访问64位表示:

LARGE_INTEGER  len_li;
GetFileSizeEx (hFile, &len_li);
LONGLONG  len_ll = len_li.QuadPart;

no联合不是结构体的结构体。

我建议你阅读下面的问答:C语言中结构体和联合体的区别

希望这有助于澄清:)