在Windows中获取文件大小

时间:2011-08-29 00:11:10

标签: c++ winapi file-management

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

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

我是否称它为结构结构?如何确定返回的文件大小以及它可以处理的大量信息?

2 个答案:

答案 0 :(得分:4)

你可能误解了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;

答案 1 :(得分:1)

没有联合不是结构的结构。

我建议你阅读这个问题和答案:Difference between a Structure and a Union in C

希望这有助于澄清:)