1 获取文件大小GetFileSize
检索指定文件的大小。
DWORD GetFileSize(
HANDLE hFile,
LPDWORD lpFileSizeHigh
);
1.1 参数介绍
(1)hFile:文件句柄。
(2)lpFileSizeHigh:指向返回文件大小高位双字的变量的指针。如果应用程序不需要高位双字,则此参数可以为NULL。即当文件的大小不超过4G的情况下,则不需要该变量。
1.2 返回值
如果函数成功,则返回值是文件大小的低位双字,如果 lpFileSizeHigh为非NULL,则函数将文件大小的高位双字放入该参数指向的变量中。
详细请见:https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfilesize
1.3 函数应用
#include <windows.h>
#include <tchar.h>
#include <iostream>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
HANDLE hFile = CreateFile("D:\\软件\\CentOS-7-x86_64-Everything-1804.iso", GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(INVALID_HANDLE_VALUE != hFile)
{
DWORD dwFileSizeH = 0;
DWORD dwFileSizeL = GetFileSize(hFile, &dwFileSizeH);
LONGLONG lFileSize = ((LONGLONG)dwFileSizeH << 32 ) | dwFileSizeL;
TCHAR szFileSize[128] = {0};
_stprintf(szFileSize, "文件大小为:%lld", lFileSize);
MessageBox(NULL, szFileSize, "Tip", MB_OK);
}
return 0;
}
2 获取文件大小GetFileSizeEx
检索指定文件的大小。
BOOL GetFileSizeEx(
HANDLE hFile,
PLARGE_INTEGER lpFileSize
);
2.1 参数介绍
(1)hFile:文件的句柄。必须使用FILE_READ_ATTRIBUTES访问权限或等效权限创建句柄 ,或者调用者必须对包含该文件的目录具有足够的权限。有关详细信息,请参阅 文件安全和访问权限。
(2)lpFileSize:指向接收文件大小的LARGE_INTEGER结构的指针,以字节为单位。
2.2 返回值
如果函数成功,则返回值非零。
如果函数失败,则返回值为零。要获取扩展错误信息,请调用 GetLastError。
详细请见:https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfilesizeex
2.3 函数应用
#include <windows.h>
#include <tchar.h>
#include <iostream>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
HANDLE hFile = CreateFile("D:\\软件\\CentOS-7-x86_64-Everything-1804.iso", GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(INVALID_HANDLE_VALUE != hFile)
{
LARGE_INTEGER lFileSize = {0};
BOOL bRet = GetFileSizeEx(hFile, &lFileSize);
TCHAR szFileSize[128] = {0};
_stprintf(szFileSize, "文件大小为:%lld", lFileSize);
MessageBox(NULL, szFileSize, "Tip", MB_OK);
}
return 0;
}