获取文件大小的方法

    技术2025-12-04  2

    在程序设计当中,我们可能要获得指定文件的大小。经过我在网上搜索,已经发现有三种方法可以获取文件的大小。

    一、通过 CFile 类的成员函数 GetLength 获取文件大小;

    二、通过 CFileFind 类的成员函数 GetLength 获取文件大小;

    下面详细说明这两种方法:

    一、CFile 类

    1、通过 Open 成员函数打开文件;

    2、通过 GetLength 成员函数获取文件大小;

    3、通过 Close 关闭文件。

    CFile f; CString str; f.Open( " e:/test1.wav " ,CFile::modeRead | CFile::shareDenyNone); str.Format( " File size : %d " ,f.GetLength()); f.Close(); MessageBox(str);

    二、CFileFind 类

    1、通过 FindFile 开始查找文件;

    2、通过 FindNextFile 获取文件信息;

    3、通过 GetLength 获取文件大小;

    4、通过 Close 关闭查找。

    CFileFind finder; CString str; finder.FindFile( " e:/test1.wav " ); finder.FindNextFile(); str.Format( " File size : %d " ,finder.GetLength()); finder.Close(); MessageBox(str);

    以上是 MFC 的方法,下面是 SDK 方法:

    一、通过 GetFileSize API 函数获取文件大小;

    HANDLE hFile; DWORD dwFileSize  =   0 ; char  szData[ 30 ]; hFile  =  CreateFile( " e:/test1.wav " ,GENERIC_READ,FILE_SHARE_READ,NULL,     OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); dwFileSize  =  GetFileSize(hFile,NULL); CloseHandle(hFile); sprintf(szData, " File Size : %d " ,dwFileSize); MessageBox(NULL,szData, " FileSize " ,MB_ICONINFORMATION);

    二、通过 FindFirstFile 和 WIN32_FIND_DATA 方法获取文件大小;

    LPWIN32_FIND_DATA lpFindFileData; HANDLE hFindFile; char  szData[ 30 ]; lpFindFileData  =   new  WIN32_FIND_DATA; hFindFile  =  FindFirstFile( " e:/test1.wav " ,lpFindFileData); FindNextFile(hFindFile,lpFindFileData); FindClose(hFindFile); sprintf(szData, " File Size : %d " ,lpFindFileData -> nFileSizeLow); MessageBox(NULL,szData, " FileSize " ,MB_ICONINFORMATION); delete lpFindFileData;

    说明:以上代码都没有检查函数返回值,读者在实际编写程序时应该检查文件打开是否成功。

    另外,CFile 类在实现时,是从文件头移动到文件尾,而不是用 GetFileSize API 函数实现的,有兴趣的朋友可以看看MFC源代码。

    结尾:如果读者朋友还有其它方法,请与大家分享!

    如果您认为这篇文章对您有用,请您回帖,以资鼓励!

    最新回复(0)