VC獲取文件大小的一些問題

VC獲取文件大小的一些問題

vc獲取文件大小的方式太多了,這裏不舉例說明了。我說說我遇到的一個小問題,功能是統計一個文件的大小,通常做法如下:

CFile file;   
if(file.Open(_T("test.doc"),CFile::modeRead))
	DWORD fileSize = file.GetLength();
file.Close();   

這時如果該文件下有文件是打開的,那麼該函數就獲取不到所打開文件的實際大小。原因是我採用的解決辦法是,使用句柄,那麼它在獲取文件的大小是該文件在硬盤所佔空間,跟其所處的狀態無關(打開或關閉),代碼:

HANDLE handle = CreateFile(_T(""), FILE_READ_EA, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
if (handle != INVALID_HANDLE_VALUE)
{	DWORD fileSize = GetFileSize(handle, NULL);
	CloseHandle(handle);
}


付一些可以獲取文件大小的類、結構體、函數:CFileStatus【m_size】、CFile、CStdioFile、WIN32_FIND_DATA【nFileSizeLow】、GetFileSize、CFileFind、_stat【st_size】、_filelength、filelength、_lseek(fp,0,SEEK_END)等等……

可參見:http://www.cnblogs.com/cxun/archive/2009/02/24/1397153.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章