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编程技术——图形渲染实战(四十)——深度缓冲与3D变换:从平面到立体
开发语言·c++·平面·3d·图形渲染·win32
charlie1145141915 天前
通用GUI编程技术——图形渲染实战(三十八)——顶点缓冲与输入布局:GPU的第一个三角形
开发语言·c++·学习·图形渲染·win32
charlie1145141915 天前
通用GUI编程技术——图形渲染实战(三十九)——纹理与采样器:从WIC加载到GPU渲染
开发语言·c++·图形渲染·win32
charlie1145141918 天前
通用GUI编程技术——图形渲染实战(三十六)——Constant Buffer与数据传递:CPU-GPU通信通道
开发语言·c++·windows·c·图形渲染·win32
charlie11451419116 天前
通用GUI编程技术——图形渲染实战(三十三)——Direct2D与Win32/GDI互操作:渐进迁移实战
c++·图形渲染·gui·win32
charlie11451419119 天前
通用GUI编程技术——图形渲染实战(三十一)——Direct2D效果与图层:高斯模糊到毛玻璃
c++·图形渲染·gui·win32
jolimark20 天前
微软不支持C开发Win32原因剖析,及C语言在系统开发中的优势
c语言·微软·mfc·系统开发·win32
charlie11451419120 天前
通用GUI编程技术——图形渲染实战(三十)——Direct2D几何体系统:从路径到命中测试
开发语言·c++·windows·信息可视化·c·图形渲染·win32
charlie11451419123 天前
通用GUI编程技术——图形渲染实战(二十九)——Direct2D架构与资源体系:GPU加速2D渲染入门
开发语言·c++·学习·架构·图形渲染·win32
charlie11451419124 天前
通用GUI编程技术——图形渲染实战(二十八)——图像格式与编解码:PNG/JPEG全掌握
开发语言·c++·windows·学习·图形渲染·win32