VC 判断目录/文件是否存在 创建目录 求目录/文件大小
2014-11-14 15:01
696 查看
原文链接:http://blog.sina.com.cn/s/blog_5f432e6a0100o0aj.html
目录是否存在检查:
文件存在性检查:
注意,该函数是检查当前目录下是否有该文件
如果想检查其他目录下是否有该文件,则在参数中输入该文件的完整路径即可
创建目录:
文件大小:
DWORDGetFileSize(CString filepath)
{
WIN32_FIND_DATA fileInfo;
HANDLEhFind;
DWORDfileSize;
CStringfilename;
filename =filepath;
hFind =FindFirstFile(filename,&fileInfo);
if(hFind !=INVALID_HANDLE_VALUE)
fileSize =fileInfo.nFileSizeLow;
FindClose(hFind);
returnfilesize;
}
当然在CFileFind里面有GetLength()函数,也可以求得。
文件夹大小
DWORDCVCTestDlg::GetDirSize(CString strDirPath)
{
CStringstrFilePath;
DWORD dwDirSize = 0;
strFilePath+= strDirPath;
strFilePath+= "\\*.*";
CFileFindfinder;
BOOL bFind =finder.FindFile(strFilePath);
while(bFind)
{
bFind =finder.FindNextFile();
if(!finder.IsDots())
{
CStringstrTempPath = finder.GetFilePath();
if(!finder.IsDirectory())
{
dwDirSize +=finder.GetLength();
}
else
{
dwDirSize +=GetDirSize(strTempPath);
}
}
}
finder.Close();
returndwDirSize;
VC删除文件夹下所有文件的代码
//删除文件夹目录(非空)
bool DeleteDirectory(char* sDirName)
{
CFileFind tempFind;
char sTempFileFind[200] ;
sprintf(sTempFileFind,"%s\*.*",sDirName);
BOOL IsFinded = tempFind.FindFile(sTempFileFind);
while (IsFinded)
{
IsFinded = tempFind.FindNextFile();
if (!tempFind.IsDots())
{
char sFoundFileName[200];
strcpy(sFoundFileName,tempFind.GetFileName().GetBuffer(200));
if (tempFind.IsDirectory())
{
char sTempDir[200];
sprintf(sTempDir,"%s\%s",sDirName,sFoundFileName);
DeleteDirectory(sTempDir);
}
else
{
char sTempFileName[200];
sprintf(sTempFileName,"%s\%s",sDirName,sFoundFileName);
DeleteFile(sTempFileName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(sDirName))
{
return FALSE;
}
return TRUE;
}
/////////////////////////////////////////
//下面是应用,CString m_strDir 是一个文件夹路径,如:d:downloadpic
BOOL DelAll()
{
if(PathFileExists(m_strDir))
DeleteDirectory((LPSTR)(LPCTSTR)m_strDir);
return 1;
}
如果不进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。
示例代码:
BOOL DelTree(LPCTSTR lpszPath)
{
SHFILEOPSTRUCT FileOp;
FileOp.fFlags = FOF_NOCONFIRMATION;
FileOp.hNameMappings = NULL;
FileOp.hwnd = NULL;
FileOp.lpszProgressTitle = NULL;
FileOp.pFrom = lpszPath;
FileOp.pTo = NULL;
FileOp.wFunc = FO_DELETE;
returnSHFileOperation(&FileOp) == 0;
}
目录是否存在检查:
BOOL FolderExist(CString strPath) { WIN32_FIND_DATA wfd; BOOL rValue= FALSE; HANDLE hFind= FindFirstFile(strPath, &wfd); if((hFind!=INVALID_HANDLE_VALUE)&& (wfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)) { rValue = TRUE; } FindClose(hFind); returnrValue; } |
注意,该函数是检查当前目录下是否有该文件
如果想检查其他目录下是否有该文件,则在参数中输入该文件的完整路径即可
BOOL FileExist(CString strFileName) { CFileFindfFind; returnfFind.FindFile(strFileName); } |
BOOL CreateFolder(CString strPath) { SECURITY_ATTRIBUTES attrib; attrib.bInheritHandle = FALSE; attrib.lpSecurityDescriptor = NULL; attrib.nLength = sizeof(SECURITY_ATTRIBUTES); //上面定义的属性可以省略 //直接使用return::CreateDirectory(path, NULL);即可 return::CreateDirectory(strPath, &attrib); } |
DWORDGetFileSize(CString filepath)
{
WIN32_FIND_DATA fileInfo;
HANDLEhFind;
DWORDfileSize;
CStringfilename;
filename =filepath;
hFind =FindFirstFile(filename,&fileInfo);
if(hFind !=INVALID_HANDLE_VALUE)
fileSize =fileInfo.nFileSizeLow;
FindClose(hFind);
returnfilesize;
}
当然在CFileFind里面有GetLength()函数,也可以求得。
文件夹大小
DWORDCVCTestDlg::GetDirSize(CString strDirPath)
{
CStringstrFilePath;
DWORD dwDirSize = 0;
strFilePath+= strDirPath;
strFilePath+= "\\*.*";
CFileFindfinder;
BOOL bFind =finder.FindFile(strFilePath);
while(bFind)
{
bFind =finder.FindNextFile();
if(!finder.IsDots())
{
CStringstrTempPath = finder.GetFilePath();
if(!finder.IsDirectory())
{
dwDirSize +=finder.GetLength();
}
else
{
dwDirSize +=GetDirSize(strTempPath);
}
}
}
finder.Close();
returndwDirSize;
VC删除文件夹下所有文件的代码
//删除文件夹目录(非空)
bool DeleteDirectory(char* sDirName)
{
CFileFind tempFind;
char sTempFileFind[200] ;
sprintf(sTempFileFind,"%s\*.*",sDirName);
BOOL IsFinded = tempFind.FindFile(sTempFileFind);
while (IsFinded)
{
IsFinded = tempFind.FindNextFile();
if (!tempFind.IsDots())
{
char sFoundFileName[200];
strcpy(sFoundFileName,tempFind.GetFileName().GetBuffer(200));
if (tempFind.IsDirectory())
{
char sTempDir[200];
sprintf(sTempDir,"%s\%s",sDirName,sFoundFileName);
DeleteDirectory(sTempDir);
}
else
{
char sTempFileName[200];
sprintf(sTempFileName,"%s\%s",sDirName,sFoundFileName);
DeleteFile(sTempFileName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(sDirName))
{
return FALSE;
}
return TRUE;
}
/////////////////////////////////////////
//下面是应用,CString m_strDir 是一个文件夹路径,如:d:downloadpic
BOOL DelAll()
{
if(PathFileExists(m_strDir))
DeleteDirectory((LPSTR)(LPCTSTR)m_strDir);
return 1;
}
如果不进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。
示例代码:
BOOL DelTree(LPCTSTR lpszPath)
{
SHFILEOPSTRUCT FileOp;
FileOp.fFlags = FOF_NOCONFIRMATION;
FileOp.hNameMappings = NULL;
FileOp.hwnd = NULL;
FileOp.lpszProgressTitle = NULL;
FileOp.pFrom = lpszPath;
FileOp.pTo = NULL;
FileOp.wFunc = FO_DELETE;
returnSHFileOperation(&FileOp) == 0;
}
相关文章推荐
- VC中判断目录,文件是否存在,创建目录,求目录或文件大小的方法
- VC中判断目录,文件是否存在,创建目录,求目录或文件大小的方法
- VC中判断目录,文件是否存在,创建目录,求目录或文件大小的方法
- VC中判断目录,文件是否存在,创建目录,求目录或文件大小的方法
- VC中判断目录,文件是否存在,创建目录的方法
- C中判断目录,文件是否存在,创建目录,求目录或文件大小的方法(转)
- VC中判断目录,文件是否存在,创建目录的方法
- VC(MFC)判断文件/目录是否存在,创建目录
- VC中判断目录,文件是否存在,创建目录的方法
- VC中判断目录,文件是否存在,创建目录的方法
- VC中判断目录,文件是否存在,创建目录的方法
- VC中判断目录,文件是否存在,创建目录的方法
- VC中判断目录,文件是否存在,创建目录的方法
- VC中判断目录,文件是否存在,创建目录的方法
- VC(MFC)判断文件/目录是否存在
- 上传sftp,创建20171024目录,判断目录是否存在,复制文件,判断文件字符集
- C#文件读写追加创建目录,判断目录是否存在等操作
- 28先判断是否存在,再创建文件夹或文件,递归计算文件夹大小
- VC判断文件或目录等是否存在
- VC++------------判断指定目录是否存在,不存在则创建