VC获取文件大小!

VC获取文件大小!
2008-12-12 08:46

http://hi.baidu.com/vcmfc/blog/item/c8cd58f4ec90d568dcc47446.html

我查到两种方法:
方法一:
WIN32_FIND_DATA fileInfo; HANDLE hFind; DWORD fileSize; const char *fileName = 文件的路径及名字; hFind = FindFirstFile(fileName ,&fileInfo); if(hFind != INVALID_HANDLE_VALUE)
fileSize = fileInfo.nFileSizeLow; FindClose(hFind);
方法二:
HANDLE hFile; // the file handle DWORD dwFileSize; // temporary storage for file sizes
// Create the test file. Open it "Create Always" to overwrite any // existing file. The data is re-created below. hFile = CreateFile(lpcTheFile, GENERIC_READ | GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) { printf("hFile is NULL/n"); return 4; }
dwFileSize = GetFileSize(hFile, NULL); printf("hFile size: %10d/n", dwFileSize);

 

C和C++获取文件大小的方法总结
2008年03月31日 星期一 14:21

1.MFC中的方法:(C++)

CFileStatus status; CFile::GetStatus("D://test.txt",status); long lSizeOfFile; lSizeOfFile = status.m_size;

lSizeOfFile的值就是D://test.txt文件的大小

2.标准C获得文件大小的5种方法 (注意:"__FILE__"指的是当前文件,你可以改为有效路径的目标文件,比如"D://test.txt") #include "stdafx.h" #include "stdio.h" #include <sys/stat.h> #include <io.h> #include <FCNTL.H>

int getfilesize() {     int iresult;     struct _stat buf;     iresult = _stat(__FILE__,&buf);     if(iresult == 0)     {         return buf.st_size;     }     return NULL; }

int getfilesize01() {     int fp;     fp=_open(__FILE__,_O_RDONLY);     if(fp==-1)         return NULL;     return _filelength(fp);     //return NULL; }

int getfilesize02() {     int fp;     fp=_open(__FILE__,_O_RDONLY);     if(fp==-1)         return NULL;     return _lseek(fp,0,SEEK_END);     //return NULL; }

int getfilesize03() {     int fp;     fp=_open(__FILE__,_O_RDONLY);     if(fp==-1)         return NULL;     return _lseek(fp,0,SEEK_END);     //return NULL; }

int getfilesize04() {     FILE *fp;     if((fp=fopen(__FILE__,"r"))==NULL)         return 0;     fseek(fp,0,SEEK_END);     return ftell(fp);    //return NULL; }

int getfilesize05() {     FILE *fp;     char str[1];     if((fp=fopen(__FILE__,"rb"))==NULL)         return 0;     for(int i = 0;!feof(fp);i++)     {         fread(&str,1,1,fp);             }     return i - 1;    //return NULL; }

int main(int argc, char* argv[]) {         printf("getfilesize()=%d/n",getfilesize());     printf("getfilesize01()=%d/n",getfilesize01());     printf("getfilesize02()=%d/n",getfilesize02());     printf("getfilesize03()=%d/n",getfilesize03());     printf("getfilesize04()=%d/n",getfilesize04());     printf("getfilesize05()=%d/n",getfilesize05());     return 0; }

 

VC获取文件夹大小代码:

以下是代码片段:

DWORD64 GetFolderSize(LPCTSTR szPath, DWORD *dwFiles, DWORD *dwFolders) { TCHAR szFileFilter[512]; TCHAR szFilePath[512]; HANDLE hFind = NULL; WIN32_FIND_DATA fileinfo; DWORD64    dwSize = 0;

strcpy(szFilePath,szPath); strcat(szFilePath,"//"); strcpy(szFileFilter,szFilePath); strcat(szFileFilter,"*.*");

hFind = FindFirstFile(szFileFilter,&fileinfo); do {    if(fileinfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)    {     if (!strcmp(fileinfo.cFileName,".") || !strcmp(fileinfo.cFileName,".."))     {      //Do nothing for "." and ".." folders     }     else     {      TCHAR sztmp[512];      strcpy(sztmp,szFilePath);      strcat(sztmp,fileinfo.cFileName);      dwSize = dwSize + GetFolderSize(sztmp);      if(dwFolders != NULL)      {       ++(*dwFolders);      }     }    }    else    {     if(dwFiles != NULL)     {      ++(*dwFiles);     }    }

   dwSize += fileinfo.nFileSizeLow;

}while(FindNextFile(hFind,&fileinfo));

FindClose(hFind); return dwSize; }

posted on 2012-11-16 17:21  MR赵  阅读(986)  评论(0编辑  收藏  举报

导航