Win32学习笔记 - 文件操作
1.1 获取本机存在的驱动器
DWORD GetLogicalDrives(VOID);
该函数的返回值是一个无符号的32位整数,每一位代表一个驱动器,Bit 0代表驱动器A, Bit 1代表驱动器B, Bit 2代表驱动器C,依次类推。如果该位为1,表示该驱动器存在,否则不存在。
1.2 获取系统盘的盘符
DWORD GetLogicalDriveStrings( DWORD nBufferLength, LPTSTR lpBuffer );
- nBufferLength :缓冲区的大小
- lpBuffer:接受数据的缓冲区
1.3 获取盘符类型
UINT GetDriveType( LPCTSTR lpRootPathName );
- lpRootPathName:盘符根目录
- 返回值:
- DRIVE_UNKNOWN - 驱动器类型不能确定。
- DRIVE_NO_ROOT_DIR - 根目录不存在。
- DRIVE_REMOVABLE - 可移动磁盘。
- DRIVE_FIXED - 本地磁盘
- DRIVE_REMOTE - 远程(网络)驱动器。
- DRIVE_CDROM - CD-ROM驱动器。
- DRIVE RAMDISK - RAM磁盘。
2.1 Windows相关的目录
2.1.1 程序当前工作目录
DWORD GetCurrentDirectory(
DWORD nBufferLength,
LPTSTR lpBuffer
);
- nBufferLength:缓冲区的大小
- lpBuffer:接受数据的缓冲区
BOOL SetCurrentDirectory(
LPCTSTR lpPathName
);
- lpPathName:要设置的目录名
2.1.2 Windows目录
UINT GetWindowsDirectory(
LPTSTR lpBuffer,
UINT uSize
);
- lpBuffer:接受数据的缓冲区
- uSize:缓冲区的大小
2.1.3 Windows的System目录
UINT GetSystemDirectory(
LPTSTR lpBuffer,
UINT uSize
);
- lpBuffer:接受数据的缓冲区
- uSize:缓冲区的大小
2.1.4 临时文件目录
DWORD GetTempPath(
DWORD nBufferLength,
LPTSTR lpBuffer
);
- lpBuffer:接受数据的缓冲区
- nBufferLength:缓冲区的大小
2.2 目录操作
2.2.1 创建目录
BOOL CreateDirectory(
LPCTSTR lpPathName,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
- lpPathName:目录名称
- lpSecurityAttributes:安全属性,默认为NULL
2.2.2 目录删除
BOOL RemoveDirectory(
LPCTSTR lpPathName
);
- lpPathName:目录名称
目录中不能包含子目录或文件。
2.2.3 目录移动
BOOL MoveFile(
LPCTSTR lpExistingFileName,
LPCTSTR lpNewFileName
);
- lpExistingFileName:已存在的目录
- lpNewFileName:新的路径
不能跨盘移动
3.1 创建或打开Windows文件
HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
- lpFileName:文件名称
- dwDesiredAccess:访问权限
- dwShareMode:共享方式
- lpSecurityAttributes:安全属性,默认为NULL
- dwCreationDisposition:创建方式
- dwFlagsAndAttributes:文件属性
- hTemplateFile:文件句柄模板,默认为NULL
成功返回文件句柄。
3.2 写数据
BOOL WriteFile(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped
);
- hFile:文件句柄
- lpBuffer:数据BUFF
- nNumberOfBytesToWrite:数据长度
- lpNumberOfBytesWritten:返回实际写入的数据
- lpOverlapped:默认为NULL
3.3 读数据
BOOL ReadFile(
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped
);
- hFile:文件句柄
- lpBuffer:数据BUFF
- nNumberOfBytesToRead:要读的字节数
- lpNumberOfBytesRead:实际读到字节数
- lpOverlapped:默认为NULL
3.4 关闭文件
BOOL CloseHandle(
HANDLE hObject
);
- hObject:文件句柄
3.5 文件长度
DWORD GetFileSize(
HANDLE hFile,
LPDWORD lpFileSizeHigh
);
- hFile:文件句柄
- lpFileSizeHigh:文件长度的高32位
返回值是文件长度的低32位
3.6 文件指针
DWORD SetFilePointer(
HANDLE hFile,
LONG lDistanceToMove,
PLONG lpDistanceToMoveHigh,
DWORD dwMoveMethod
);
- hFile:文件句柄
- lDistanceToMove:偏移量的低32位
- lpDistanceToMoveHigh:偏移量的高32位
- dwMoveMethod:偏移的相对位置
SetFilePointer函数返回实际偏移量的低32位,lpDistanceToMoveHigh返回实际偏移量的高32位
3.7 文件相关操作
- CopyFile - 拷贝文件
- DeleteFile - 删除文件
- MoveFile - 移动文件
3.8 文件属性
- GetFileAttributes - 获取文件属性
- SetFileAttributes - 设置文件属性
- GetFileAttributesEx - 获取文件属性、时间等
3.9 文件查找
3.9.1 查找文件
HANDLE FindFirstFile(
LPCTSTR lpFileName,
LPWIN32_FIND_DATA lpFindFileData
);
- lpFileName:查找路径
- lpFindFileData:查找的数据
返回查找句柄
3.9.2 获取下一个文件
BOOL FindNextFile(
HANDLE hFindFile,
LPWIN32_FIND_DATA lpFindFileData
);
- hFindFile:查找句柄
- lpFindFileData:查找的数据
找到返回TRUE
3.9.3 关闭查找
BOOL FindClose(
HANDLE hFindFile
);
- hFindFile:查找句柄
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。