获取文件大小

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;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值