金歌 发表于 2024-2-1 22:47:38

win32 API 文件夹操作函数整理

常用操作文件目录的函数
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(
LPCWSTR lpFileName,         //文件/文件夹名称
DWORD   nBufferLength,        //缓存大小
LPWSTRlpBuffer,                //缓存指针
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 = { 0 };
    GetFullPathName(wfd.cFileName, MAX_PATH, pullPath, 0);

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

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

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

  
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: win32 API 文件夹操作函数整理