windows文件管理

来源:互联网 发布:股票数据模型软件 编辑:程序博客网 时间:2024/05/08 00:42

前言

一切皆文件。操作文件的函数总是比你想象的更强大,windows操作文件的函数返回是HANDLE句柄,它可以标识一块内存,所以它的功能也是远比文件更强大。

文件读写

  • 打开/创建文件
    HANDLE CreateFile(
    LPCTSTR lpFileName, // pointer to name of the file文件名称路径
    DWORD dwDesiredAccess, // access (read-write) mode打开方式
    DWORD dwShareMode, // share mode共享方式(其他进程共同操作时权限)
    LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    // pointer to security attributes安全属性,设为NULL
    DWORD dwCreationDisposition, // how to create打开/创建方式
    DWORD dwFlagsAndAttributes, // file attributes打开追加属性
    HANDLE hTemplateFile // handle to file with attributes to
    // copy 设为NULL
    );

  • 写文件
    BOOL WriteFile(
    HANDLE hFile, // 文件句柄
    LPCVOID lpBuffer, // 缓冲数据的地址
    DWORD nNumberOfBytesToWrite, // 准备写入的数据大小
    LPDWORD lpNumberOfBytesWritten, // 实际写入的数据大小(返回值)
    LPOVERLAPPED lpOverlapped // 同步/异步方式 NULL为同步
    );
    最后的同步/异步方式将影响这个函数是否会产生阻塞,如果同步方式下,写入的数据未能投递到系统写队列里,将产生阻塞

  • 读文件
    BOOL ReadFile(
    HANDLE hFile, // 文件句柄
    LPVOID lpBuffer, // 读出数据存放的缓冲地址
    DWORD nNumberOfBytesToRead, // 准备读出的数据大小
    LPDWORD lpNumberOfBytesRead, // 实际读出的数据大小
    LPOVERLAPPED lpOverlapped // 同步/异步方式 NULL为同步
    );

  • 读取文件大小和设定文件读取位置
    DWORD GetFileSize(
    HANDLE hFile, // 文件句柄
    LPDWORD lpFileSizeHigh
    // 文件大小的高32位存放地址
    );返回值是文件大小低32

设置文件读取/写入偏移位置
DWORD SetFilePointer(
HANDLE hFile, // 文件地址
LONG lDistanceToMove, // 偏移大小低32位
PLONG lpDistanceToMoveHigh,
// 偏移大小高32位
DWORD dwMoveMethod // 偏移相对位置
);

  • 其它操作函数
    CopyFile() DeleteFile() MoveFile(),
    其中MoveFile在操作目录时是不能跨盘的

文件遍历

文件遍历利用FindFirstFile. FindNextFile. FindClose3个函数配合使用,首先用FindFirstFile打开一个目录,该函数返回一个文件句柄,循环调用FindNextFile,它的返回值如果是FALSE说明遍历完毕,而文件的信息都会记录在FindFirstFile和FindNextFile的第二个结构体参数里,
最后FindClose关闭这个文件句柄。

0 0