VC中判断目录,文件是否存在,创建目录,求目录或文件大小的方法

VC中判断目录,文件是否存在,创建目录,求目录或文件大小的方法

http://blog.163.com/xue_huashan/blog/static/8044800420096109544768/

目录是否存在检查:

 

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);

    return rValue;

}

 

文件存在性检查:

注意,该函数是检查当前目录下是否有该文件

如果想检查其他目录下是否有该文件,则在参数中输入该文件的完整路径即可

 

BOOL FileExist(CString strFileName)

{

    CFileFind fFind;

    return fFind.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);

}

 

文件大小:

DWORD GetFileSize(CString filepath)

{

    WIN32_FIND_DATA fileInfo;

    HANDLE hFind;

    DWORD fileSize;

    CString filename;

    filename = filepath;

    hFind = FindFirstFile(filename,&fileInfo);

    if(hFind != INVALID_HANDLE_VALUE)

        fileSize = fileInfo.nFileSizeLow;

   

    FindClose(hFind);

    return filesize;

}

当然在CFileFind里面有GetLength()函数,也可以求得。

文件夹大小

DWORD CVCTestDlg::GetDirSize(CString strDirPath)

{

    CString strFilePath;

    DWORD    dwDirSize = 0;

   

    strFilePath += strDirPath;

    strFilePath += "//*.*";

   

    CFileFind finder;

    BOOL bFind = finder.FindFile(strFilePath);

    while (bFind)

    {

        bFind = finder.FindNextFile();

        if (!finder.IsDots())

        {

            CString strTempPath = finder.GetFilePath();

            if (!finder.IsDirectory())

            {

                dwDirSize += finder.GetLength();

            }

            else

            {

                dwDirSize += GetDirSize(strTempPath);

            }

        }

    }

    finder.Close();

    return dwDirSize;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值