ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

win32文件系统

win32文件系统 文件系统基础定义文件系统操作系统管理磁盘文件的数据结构与组织方法决定文件在磁盘存储格式常见NTFS、FAT32特性NTFSFAT32单分区上限2TB32GB单个文件上限支持 4GB最大 4GBEFS 文件加密✅支持❌不支持磁盘配额✅支持❌不支持● EFS 加密仅 NTFS 可用加密文件名字显示绿色加密用户可访问其他用户拒绝访问● 磁盘配额限制用户占用磁盘空间超出配额拒绝分配空间在磁盘属性「配额」标签配置Windows 文件 APICreateFile/ReadFile 等对 NTFS、FAT32使用同一套 API底层差异被系统屏蔽卷逻辑驱动器相关 API卷 逻辑盘C 盘、D 盘一块物理硬盘可划分多个逻辑卷GetLogicalDrives● 功能获取存在的驱动器返回 DWORD 位掩码每一位代表 A~Z 盘符● 示例返回 13 → 二进制1101→ A、C、D 盘存在bit3 bit2 bit1 bit01101D C B AGetLogicalDriveStrings● 功能获取全部盘符字符串缓冲区输出格式“A:\ \0 C:\ \0 D:\ \0\0”多个以\0分隔末尾双\0GetDriveType● 判断驱动器类型● 返回值0 未知1 固定硬盘2 可移动3 网络盘4 光驱5RAM 盘GetVolumeInformation● 获取卷信息卷标、卷序列号、最大文件名长度、文件系统名称NTFS/FAT32● ⚠️卷序列号格式化会改变不是硬盘硬件序列号目录操作 APICreateDirectory 创建文件夹BOOLCreateDirectory(LPCTSTR lpPathName,// 目录路径LPSECURITY_ATTRIBUTES lpSecurityAttributes//安全属性NULL默认);示例CreateDirectory(LC:\A, NULL);只能创建单层目录路径分隔符 C 语言写\转义2. RemoveDirectory 删除目录BOOLRemoveDirectory(LPCTSTR lpPathName);⚠️只能删除空文件夹目录内有文件会失败3. MoveFile 重命名 / 移动目录 / 文件BOOLMoveFile(LPCTSTR lpExistingFileName,LPCTSTR lpNewFileName);● 同盘仅改名跨盘复制原文件再删除源文件● 可以直接移动带文件的目录4. GetCurrentDirectory / SetCurrentDirectory● GetCurrentDirectory获取进程当前工作目录不是 exe 所在目录● SetCurrentDirectory修改进程当前目录相对路径的文件 / 目录操作以当前工作目录作为基准文件核心 APICreateFile最重要创建 / 打开文件、管道、设备HANDLECreateFile(LPCTSTR lpFileName,// 文件路径DWORD dwDesiredAccess,// 访问权限DWORD dwShareMode,// 共享模式LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,// 创建行为DWORD dwFlagsAndAttributes,// 文件属性HANDLE hTemplateFile);dwDesiredAccess 访问权限● GENERIC_READ 只读● GENERIC_WRITE 只写● GENERIC_READ | GENERIC_WRITE 读写dwShareMode 共享模式● 0独占打开别的程序不能读写● FILE_SHARE_READ允许其他进程读● FILE_SHARE_WRITE允许其他进程写● FILE_SHARE_DELETE允许其他进程删除dwCreationDisposition 创建方式宏作用CREATE_NEW新建文件已存在则失败CREATE_ALWAYS总是新建覆盖旧文件OPEN_EXISTING打开已有文件不存在失败OPEN_ALWAYS打开不存在就新建TRUNCATE_EXISTING打开并清空原有内容dwFlagsAndAttributes 文件属性● FILE_ATTRIBUTE_NORMAL 普通文件● FILE_ATTRIBUTE_HIDDEN 隐藏● FILE_ATTRIBUTE_READONLY 只读返回 HANDLE用完必须 CloseHandle关闭句柄否则资源泄漏2. 配套文件 API● ReadFile读文件● WriteFile写文件● GetFileSize获取文件大小返回低 32 位大文件需要高 32 位参数● SetFilePointer移动文件读写指针● GetFileAttributes获取文件属性只读 / 隐藏 / 目录等● CopyFile复制文件● DeleteFile删除文件● FindFirstFile / FindNextFile遍历目录下所有文件注意事项路径C/C 字符串内反斜杠需要转义 \长路径可使用\?\前缀支持 32000 字符错误判断API 返回失败时调用GetLastError()查看错误码资源文件句柄、内核对象用完必须 CloseHandle进程当前目录 ≠ 可执行文件所在目录不要混淆总结NTFS 独有EFS 加密、磁盘配额FAT32 单文件上限 4GB卷 APIGetLogicalDrives位掩码、GetVolumeInformation获取文件系统类型 NTFS/FAT32目录CreateDirectory 建文件夹RemoveDirectory只能删空目录MoveFile 支持目录改名CreateFile 是核心dwCreationDisposition 决定新建 / 覆盖 / 打开共享模式控制多进程并发访问文件句柄用完一定要 CloseHandle
返回列表