• C++之文件操作


    CreateFile:获得一个已存在文件句柄或者新建文件句柄
    
    HANDLE CreateFileW(
      LPCWSTR               lpFileName,//文件路径
      DWORD                 dwDesiredAccess,//文件的访问控制,读GENERIC_READ、写GENERIC_WRITE,读写(GENERIC_READ | GENERIC_WRITE)
      DWORD                 dwShareMode,//零表示不共享,FILE_SHARE_READ、/、FILE_SHARE_WRITE对文件进行共享访问
      LPSECURITY_ATTRIBUTES lpSecurityAttributes,//安全描述符
      DWORD                 dwCreationDisposition,//文件不存在或存在时的操作
      DWORD                 dwFlagsAndAttributes,//设置文件标志位
      HANDLE                hTemplateFile//大多数情况为NULL
    );
    
    dwCreationDisposition:指定当文件存在或不存在时的操作。常见的操作有5种:
    CREATE_NEW:创建文件,如果文件存在会出错;
    CREATE_ALWAYS:创建文件,会修改前一个文件;
    OPEN_EXISTING:文件已经存在;
    OPEN_ALWAYS:如果不存在就创建;
    TRUNCATE_EXISTING:将现有的文件缩短为零长度;
    dwFlagAndAttributes:表示新创建文件的属性。文件的常见属性有5种:
    FILE_ATTRIBUTE_ARCHIVE:标记为归档属性;
    FILE_ATTRIBUTE_NORMAL:默认属性;
    FILE_ATTRIBUTE_HIDDEN:隐藏文件或目录;
    FILE_ATTRIBUTE_READONLY:文件为只读;
    FILE_ATTRIBUTE_SYSTEM:文件为系统文件;
    
    
    WriteFile:写文件
    
    BOOL WriteFile(
      HANDLE       hFile,//文件句柄
      LPCVOID      lpBuffer,//要写入的数据缓存区
      DWORD        nNumberOfBytesToWrite,//要写入的字节数
      LPDWORD      lpNumberOfBytesWritten,//设置一个遍历,用来接收写入的内容
      LPOVERLAPPED lpOverlapped//大多数情况为NULL
    );
    
    ReadFile:读文件 与写文件类似
    
    BOOL ReadFile(
      HANDLE       hFile,
      LPVOID       lpBuffer,
      DWORD        nNumberOfBytesToRead,
      LPDWORD      lpNumberOfBytesRead,
      LPOVERLAPPED lpOverlapped
    );
    
    
    
    #include<windows.h>
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    	//文件句柄
    	HANDLE hFile; //用来接收CreateFile返回来的句柄,用这个句柄来进行写入的操作
    	DWORD  dwWritten;
    	TCHAR  szSystemDir[MAX_PATH]; //字符数组,用于存储系统目录
    
    	GetSystemDirectory(szSystemDir, MAX_PATH);//获取系统目录
    	hFile = CreateFile("test.txt",
    		GENERIC_WRITE,
    		0,
    		NULL,
    		CREATE_ALWAYS,
    		FILE_ATTRIBUTE_NORMAL,
    		NULL);//创建文件txt
    
    	if (hFile != INVALID_HANDLE_VALUE)
    	{
    		if (!WriteFile(hFile, szSystemDir, lstrlen(szSystemDir), &dwWritten, NULL))//将系统目录,系统信息写入文件中
    		{
    			return GetLastError(); //写入失败 返回错误信息
    		}
    	}
    	CloseHandle(hFile);//关闭文件
    	return 0;
    }
    
    联系邮箱:yang_s1r@163.com 博客园地址:https://www.cnblogs.com/Yang34/
  • 相关阅读:
    网上订餐系统后台代码bug记录与解决
    vector二维数组
    力扣-树-练习题(一)
    优先队列

    并查集
    C++进制转换函数
    平衡二叉树(AVL树)定义与基本操作
    二叉查找树练习题
    树的遍历
  • 原文地址:https://www.cnblogs.com/Yang34/p/14392830.html
Copyright © 2020-2023  润新知