获取文件大小的六种方法大全,打开文件和不打开文件都有,C方法获取,C++方法获取,MFC方法获取。

bool FileHelper::GetAFileSize(const char *path,unsigned __int64& fileSize)
{
	if(!IsFileExsist(path))
	{
		return 0;
	}

	//方案1,打开文件,获取文件大小

    //HANDLE hFile = NULL;
    //unsigned long size_low = 0, size_high = 0, bytes_read = 0;
    //hFile = CreateFileA(path, GENERIC_READ, FILE_SHARE_READ,
    //    NULL, OPEN_EXISTING,0, NULL);
    //if(hFile == INVALID_HANDLE_VALUE)
    //{
    //    return false;
    //}
    //size_low = GetFileSize(hFile, &size_high);
    //SafeCloseFileHandle(hFile);
    //fileSize = (unsigned __int64)size_low | (((unsigned __int64)size_high) << 32);
	//return true;

	//方案2,利用sys/stat.h中的stat结构体,不打开文件,获取到文件的大小
	//用到#include <sys/stat.h> 
	//struct stat stat_buf; 
	//if(stat(path, &stat_buf) < 0)
	//{
	//	fileSize = 0;
	//	return false;
	//}
	//fileSize = stat_buf.st_size;
	//return true; 

	//方案3,利用WIN32_FIND_DATA结构体,不打开文件,获取到文件的大小
	WIN32_FIND_DATA ffd ;
	HANDLE hFind = FindFirstFile(path,&ffd);
	if(hFind != INVALID_HANDLE_VALUE)
	{
		fileSize = (unsigned __int64)ffd.nFileSizeLow | (((unsigned __int64)ffd.nFileSizeHigh) << 32);
		FindClose(hFind);//此处一定要记得关闭,不然文件一直会被占用。
		return true;
	}
	return false;

	//方案4 用FILE
	//用到#include <io.h> 
	FILE* file = fopen(path, "rb");  
	if (file)  
	{  
		fileSize = filelength(fileno(file));  
		fclose(file);  
		return true;
	}
	return false;

	方案5,以下是MFC的方法
	//CFile cfile;  
	//if (cfile.Open(path, CFile::modeRead))  
	//{  
	//	fileSize = cfile.GetLength();  
	//	return true;
	//}
	//return false;

	方案6,不用打开文件获取文件大小
	//CFile cfile;  
	//CFileStatus rStatus;
	//CFile::GetStatus(path,rStatus);
	//fileSize = rStatus.m_size;
}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值