|
VC++MFC取得文件大小
在VC++ MFC中,获取文件大小可以使用 `CFile` 类或Windows API中的 `GetFileSize` 函数。以下是两种方法的示例代码:
### 方法一:使用 `CFile` 类
`CFile` 是 MFC 提供的一个类,方便地处理文件操作。
- #include <afx.h> // 包含 CFile 的定义
- long GetFileSizeUsingCFile(const CString& filePath) {
- CFile file;
- try {
- // 打开文件
- file.Open(filePath, CFile::modeRead);
- // 获取文件大小
- return file.GetLength();
- } catch (CFileException* e) {
- // 处理异常
- e->ReportError();
- e->Delete();
- return -1; // 返回-1表示出错
- }
- }
复制代码
### 方法二:使用 Windows API
如果你更喜欢使用 Windows API,可以使用 `GetFileSize` 函数。
- #include <windows.h>
- long GetFileSizeUsingAPI(const CString& filePath) {
- HANDLE hFile = CreateFile(filePath,
- GENERIC_READ,
- FILE_SHARE_READ,
- NULL,
- OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL,
- NULL);
- if (hFile == INVALID_HANDLE_VALUE) {
- // 处理错误
- return -1; // 返回-1表示出错
- }
- // 获取文件大小
- DWORD fileSize = GetFileSize(hFile, NULL);
- CloseHandle(hFile); // 关闭文件句柄
- return fileSize; // 返回文件大小
- }
复制代码
### 使用示例
你可以在你的对话框或其他类中调用这些函数来获取文件大小:
- void CMyDialog::OnBnClickedButtonGetFileSize() {
- CString filePath = _T("C:\\path\\to\\your\\file.txt"); // 替换为你的文件路径
- long size = GetFileSizeUsingCFile(filePath);
- // 或者使用 API 方法
- // long size = GetFileSizeUsingAPI(filePath);
- if (size != -1) {
- CString message;
- message.Format(_T("文件大小: %ld 字节"), size);
- AfxMessageBox(message);
- } else {
- AfxMessageBox(_T("获取文件大小失败!"));
- }
- }
复制代码
### 总结
以上两种方法都可以有效地获取文件的大小。 `CFile` 类提供了更高层次的封装,而使用 Windows API 则提供了更底层的控制。
|
|