zoukankan      html  css  js  c++  java
  • Win32 基本文件读写操作

    一.创建文件

    HANDLE hFile = ::CreateFile(TEXT("E:\\CreateFileDemo.txt"),     //创建文件的名称。
        GENERIC_WRITE|GENERIC_READ,          // 写和读文件。
        0,                      // 不共享读写。
        NULL,                   // 缺省安全属性。
        CREATE_ALWAYS,          // 如果文件存在,也创建。
        FILE_ATTRIBUTE_NORMAL, // 一般的文件。       
        NULL);                 // 模板文件为空。
    if (hFile == INVALID_HANDLE_VALUE) 
    { 
        OutputDebugString(TEXT("CreateFile fail!\r\n"));
    }
    

    二.WriteFile写文件

    写入缓冲区

    const int BUFSIZE = 4096;
    char chBuffer[BUFSIZE];          
    memcpy(chBuffer,"Test",4);
    DWORD dwWritenSize = 0;
    BOOL bRet = ::WriteFile(hFile,chBuffer,4,&dwWritenSize,NULL);
    if (bRet)
    {
        OutputDebugString(TEXT("WriteFile 写文件成功\r\n"));
    }
    

    三.FlushFileBuffers刷新文件缓冲区

    只有调用了FlushFileBuffers,文件数据才会真正被写入

    四.ReadFile读文件

    DWORD dwReadSize = 0;
    ::ZeroMemory(chBuffer,4096);
    bRet = ::ReadFile(hFile,chBuffer,4,&dwReadSize,NULL);
    
    if (bRet)
    {
        OutputDebugString(TEXT("ReadFile 读文件成功\r\n"));
    }
    else
    {
        //获取出错码。
        DWORD dwError = GetLastError(); 
        //处理出错。            
        TCHAR chErrorBuf[1024];
        wsprintf(chErrorBuf,TEXT("GetLastError()=%d\r\n"),dwError);
        OutputDebugString(chErrorBuf);
    }
    

    五.设置文件读写位置

    LONG lDistance = 0;
    DWORD dwPtr = SetFilePointer(hFile, lDistance, NULL, FILE_BEGIN);
    

    参考:http://blog.csdn.net/linhong34/archive/2008/04/13/2288586.aspx
    http://blog.csdn.net/linhong34/archive/2008/04/13/2288671.aspx

    SetEndOfFile函数,将当前文件位置设为文件末尾,GetFileSizeEx返回文件末尾大小

    ::SetEndOfFile(hFile);
    LARGE_INTEGER liFileSize;
    ::GetFileSizeEx(hFile,&liFileSize);
    
  • 相关阅读:
    1103: [POI2007]大都市meg
    bzoj2809: [Apio2012]dispatching
    bzoj3668: [Noi2014]起床困难综合症
    bzoj4025: 二分图
    bzoj4027: [HEOI2015]兔子与樱花
    bzoj3155: Preprefix sum
    http状态码status
    js改变触发
    eq
    error_reporting()
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/2042645.html
Copyright © 2011-2022 走看看