win32 API 文件夹操作函数整理
  rBH3cZ8PoQrd 2023年12月04日 126 0

常用操作文件目录的函数

1. CreateDirectory 创建文件夹

原型:

BOOL CreateDirectory(
    LPCTSTR    lpPathName,
    LPSECURITY_ATTRIBUTES    lpSecurityAttributes
);

参数说明:

lpPathName     要创建的文件夹名称
lpSecurityAttributes   忽略为NULL

返回:

  成功返回非零,失败返回零

实例:

实例:
CString str="D:\\一级文件夹";
CreteDirectory(str,NULL);
str+="\\二级文件夹";
CreateDirectory(str,NULL);

 

2.RemoveDirectory 删除文件夹

原型:

BOOL RemoveDirectory(
    LPCTSTR    lpPathName //要删除的文件夹名称
);

返回:

  成功返回非零,失败返回零

 

3. PathIsDirectory 判断文件夹是否存在

原型:

BOOL PathIsDirectory(
    LPCTSTR    lpPathName //文件夹名称
);

这个api要包含头文件(shlwapi.h)和库文件(shlwapi.lib)

 

4. 自己通过文件属性来判断文件夹是否存在

bool IsExistingDirectroy(const wchar_t* path)
{
    DWORD fa=0;
    ::SetLastError(ERROR_SUCCESS);
    //获取文件属性
    fa=::GetFileAttributesW(path);
    if(fa==INVALID_FILE_ATTRIBUTES)
    {
        //无法获取文件属性,可能是不存在
        //检查错误代码
        DWORD error=::GetLastError();
        return error != ERROR_PATH_NOT_FOUND &&
            error!=ERROR_FILE_NOT_FOUND;
    }

    return (fa & FILE_ATTRIBUTES_DIRECTORY) !=0;
}

 

5. GetFullPathName 获得文件或文件夹的全路径

原型:

DWORD GetFullPathNameW(
  [in]  LPCWSTR lpFileName, 	//文件/文件夹名称
  [in]  DWORD   nBufferLength,	//缓存大小
  [out] LPWSTR  lpBuffer,		//缓存指针
  [out] LPWSTR  *lpFilePart		//NULL
);

返回值:
	成功返回字符串长度,
	失败返回0;

 

实例:

实例:
WIN32_FIND_DATA wfd;
HANDLE hFile = FindFirstFile(TEXT("*.*"), &wfd);

if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
{ //是文件夹
    hItem = TreeView_InsertItemEx(hTree, wfd.cFileName, hParent, 1, 2);
    
    //获取文件夹的完全路径名称
    TCHAR pullPath[MAX_PATH] = { 0 };
    GetFullPathName(wfd.cFileName, MAX_PATH, pullPath, 0);

    TreeView_LoadDir(hTree, wfd.cFileName, hItem);
    SetCurrentDirectory(L"..");

}
else {
    //获取文件的完全路径名称
    TCHAR pullPath[MAX_PATH] = { 0 };
    GetFullPathName(wfd.cFileName,MAX_PATH, pullPath, 0);

    hItem = TreeView_InsertItemEx(hTree, wfd.cFileName, hParent, 0, 0);
}

 

  

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月04日 0

暂无评论

推荐阅读
  gtqiVYjgvftt   11天前   33   0   0 C语言
  FZifmKVgRC4p   2024年08月13日   32   0   0 C语言
  C0Tz0A5KKSwy   10小时前   7   0   0 C语言
  IbmESGwVVrv0   2024年08月16日   153   0   0 C语言
  C0Tz0A5KKSwy   10小时前   6   0   0 C语言
  FZifmKVgRC4p   2024年08月16日   88   0   0 C语言
rBH3cZ8PoQrd