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 //要删除的文件夹名称
);

返回:

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

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

原型:

复制代码
BOOL PathIsDirectory(
    LPCTSTR    lpPathName //文件夹名称
);

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

  1. 自己通过文件属性来判断文件夹是否存在
复制代码
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;
}
  1. 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);
}

相关推荐
charlie1145141913 天前
通用GUI编程技术——图形渲染实战(二十九)——Direct2D架构与资源体系:GPU加速2D渲染入门
开发语言·c++·学习·架构·图形渲染·win32
charlie1145141914 天前
通用GUI编程技术——图形渲染实战(二十八)——图像格式与编解码:PNG/JPEG全掌握
开发语言·c++·windows·学习·图形渲染·win32
charlie1145141915 天前
通用GUI编程技术——图形渲染实战(二十七)——坐标变换与矩阵:三级坐标系
c++·学习·c·图形渲染·win32
charlie1145141915 天前
通用GUI编程技术——图形渲染实战(二十六)——GDI+与GDI架构差异:抗锯齿与渐变
c++·windows·学习·图形渲染·win32
charlie1145141916 天前
通用GUI编程技术——图形渲染实战(二十五)——Alpha混合与透明效果:分层窗口实战
c++·windows·学习·图形渲染·win32
charlie1145141916 天前
通用GUI编程技术——图形渲染实战(二十四)——GDI Region与裁切:不规则窗口与可视化控制
c++·windows·学习·c·图形渲染·win32
charlie11451419110 天前
通用GUI编程技术——Win32 原生编程实战(二十二)——GDI 位图操作:BitBlt、StretchBlt 与图像处理
c++·windows·学习·c·win32
Peter(阿斯拉)16 天前
[WTL/Win32]_[初级]_[如何在工作线程计算文本的宽高]
win32·gdi·wtl·gdiplus·内存hdc
charlie11451419118 天前
通用GUI编程技术——Win32 原生编程实战(十八)——GDI 设备上下文(HDC)完全指南
开发语言·c++·ide·学习·visual studio·win32
charlie11451419119 天前
通用GUI编程技术——Win32 原生编程实战(十六)——Visual Studio 资源编辑器使用指南
开发语言·c++·ide·学习·gui·visual studio·win32