// >4G fail
long GetFileLength(const char* lpFilePath)
{
long lLength = 0;
FILE* fp = fopen(lpFilePath, "rb");
if (fp)
{
fseek(fp, 0L, SEEK_END);
lLength = ftell(fp);
fclose(fp);
}
return lLength;
}
BOOL GetFileLength(const char* lpFilePath, LARGE_INTEGER& liFileSize)
{
HANDLE hFile = CreateFile(lpFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
ZeroMemory(&liFileSize, sizeof(liFileSize));
::GetFileSizeEx(hFile, &liFileSize);
CloseHandle(hFile);
return TRUE;
}
LONGLONG GetFileLength(const char* lpFilePath)
{
HANDLE hFile = CreateFile(lpFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
return 0;
}
DWORD dwHigh = 0;
DWORD dwFileSize = GetFileSize(hFile, &dwHigh);
CloseHandle(hFile);
LONGLONG llFileSize = dwHigh;
llFileSize <<= 32;
llFileSize += dwFileSize;
return llFileSize;
}
char* filepath = "d:\\install\\MSDN2001.rar";
LARGE_INTEGER liFileSize = {0};
GetFileLength(filepath, liFileSize);
LONGLONG x = GetFileLength(filepath);
获取文件大小
最新推荐文章于 2023-05-24 11:09:14 发布