学习电脑,计算机系统故障维护,电脑技术,电脑知识学习-就上第二电脑网
当前位置: 首页 > 电脑知识 > 电脑基础

586电脑windows客户端开发--文件以及文件夹相关操作(windows api)

 更新时间: 2019-08-08 16:27:48   作者:第二电脑网   来源:第二电脑网   浏览数:156   我要评论

[code] 让我掉下眼泪的 不止昨夜的酒   让我依依不舍的 不止你的温柔   雨路还要走多久 你攥着我的手   让我感到为难的 是挣扎的自由   分别总是在九月 回忆是思
[code]   让我掉下眼泪的 不止昨夜的酒
  让我依依不舍的 不止你的温柔
  雨路还要走多久 你攥着我的手
  让我感到为难的 是挣扎的自由
  分别总是在九月 回忆是思念的愁
  深秋嫩绿的垂柳 亲吻着我额头
  在那座阴雨的小城里 我从未忘记你
  成都 带不走的 只有你
  --------------------------------------------------------赵雷~《成都》

做客户端开发,避免不了与文件以及文件夹打交道。
今天就与大家分享一下,windows平台上的一些关于文件以及文件夹的操作:
1 重命名
不再赘述,看看之前的博客吧:
《C++中修改文件夹名以及文件名》
2 判断是文件还是文件夹是否存在
[code]// 判断文件是否存在
BOOL IsFileExist(const CString& csFile)
{
    DWORD dwAttrib = GetFileAttributes(csFile);
    return INVALID_FILE_ATTRIBUTES != dwAttrib && 0 == (dwAttrib & FILE_ATTRIBUTE_DIRECTORY);
}
// 判断文件夹是否存在
BOOL IsDirExist(const CString & csDir)
{
    DWORD dwAttrib = GetFileAttributes(csDir);
    return INVALID_FILE_ATTRIBUTES != dwAttrib && 0 == (dwAttrib & FILE_ATTRIBUTE_DIRECTORY);
}
// 判断文件或文件夹是否存在
BOOL IsPathExist(const CString & csPath)
{
    DWORD dwAttrib = GetFileAttributes(csPath);
    return INVALID_FILE_ATTRIBUTES != dwAttrib;
}

// 变体
BOOL IsPathExist(const CString & csPath)
{
    WIN32_FILE_ATTRIBUTE_DATA attrs = { 0 };
    return 0 != GetFileAttributesEx(csPath, GetFileExInfoStandard, &attrs);
}

3删除文件

《586电脑windows客户端开发--文件以及文件夹相关操作(windows api)》总结了关于电脑技术教程,对于我们来电脑知识网确实能学到不少知识。

[code]if(!_access(source,0))
{

    SetFileAttributes(source,0);
    if(DeleteFile(source))//删除成功
    {
       cout<<source<<" 已成功删除."<<endl;
    }
    else//无法删除:文件只读或无权限执行删除
    {
       cout<<source<<" 无法删除:文件为只读属性或无删除权限."<<endl;
    }
    }
    else//文件不存在
    {
    cout<<source<<" 不存在,无法删除."<<endl;
}

4删除文件夹下所有的文件
[code]BOOL CDlgData::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; 
}

5 拷贝文件
[code]bool CopyFile(const std::wstring &from_path, const std::wstring &to_path)
{
    if (from_path.size() >= MAX_PATH ||
        to_path.size() >= MAX_PATH) {
            return false;
    }
    return (::CopyFileW(from_path.c_str(), to_path.c_str(),
        false) != 0);
}

6 获取文件大小
[code]int64_t GetFileSize(const PathString &filepath)
{
    WIN32_FIND_DATAW file_data;
    HANDLE file = FindFirstFileW(filepath.c_str(), &file_data);

    if (file == INVALID_HANDLE_VALUE)
        return -1;
    LARGE_INTEGER li = { file_data.nFileSizeLow, file_data.nFileSizeHigh };
    FindClose(file);
    return li.QuadPart;
}

7 获取文件夹下所有文件
[code]void GetFilesInDirectory(std::vector<string> &out, const string &directory)
{

    HANDLE dir;
    WIN32_FIND_DATA file_data;

    if ((dir = FindFirstFile((directory + "/*").c_str(), &file_data)) == INVALID_HANDLE_VALUE)
        return; /* No files found */

    do {
        const string file_name = file_data.cFileName;
        const string full_file_name = directory + "/" + file_name;
        const bool is_directory = (file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;

        if (file_name[0] == '.')
            continue;

        if (is_directory)
            continue;

        out.push_back(full_file_name);
    } while (FindNextFile(dir, &file_data));

    FindClose(dir);
}

更多:586电脑windows客户端开发--文件以及文件夹相关操作(windows api)
https://www.002pc.com/diannaojichu/786.html

你可能感兴趣的windows,api,客户端,文件夹,文件,开发

    关于我们 - 广告合作 - 联系我们 - 免责声明 - 网站地图 - 投诉建议 - 在线投稿

      浙ICP备140365454号

    ©CopyRight 2008-2020 002pc.COM Inc All Rights Reserved. 第二电脑网 版权所有 联系QQ:282523118