readfile 返回true,且其读取的大小为0

来源:互联网 发布:数据可视化实战pdf下载 编辑:程序博客网 时间:2024/05/18 01:53

先贴代码

//    // 文件映射操作    //     printf("Print Any Key To CreateFile\r\n");    getchar();    HANDLE hFile = CreateFile(        L"TempFile.txt",        GENERIC_ALL,        FILE_SHARE_READ,        NULL,CREATE_ALWAYS,        FILE_ATTRIBUTE_NORMAL,        NULL);    if(hFile != NULL && hFile != INVALID_HANDLE_VALUE)    {        printf("CreateFile Success\r\n");        CHAR    szWriteBuffer[0x100] = {0};        for(int i =0 ;i < 0x100 - 1;i ++)        {            szWriteBuffer[i] = i % 10 + 0x6a;        }        DWORD dwHasWrite;        printf("Print Any Key To WriteFile\r\n");        getchar();        if(WriteFile(hFile,szWriteBuffer,0x100,&dwHasWrite,NULL))        {            printf("WriteFile Success :%d\r\n",dwHasWrite);            FlushFileBuffers(hFile);            //CloseHandle(hFile);            //Sleep(0x1000);            /*hFile = CreateFile(                L"TempFile.txt",                GENERIC_ALL,                FILE_SHARE_READ,                NULL,                OPEN_EXISTING,                FILE_ATTRIBUTE_NORMAL,                NULL);            if(hFile != NULL && hFile != INVALID_HANDLE_VALUE)            {                printf("CreateFile Success\r\n");            }            else            {                printf("CreateFile Error :%d\r\n",GetLastError());                getchar();                getchar();                return 0;            }*/            char    szReadBuffer[0x100] = {0};            DWORD   dwHasRead = 0;            SetFilePointer(hFile,0,0,FILE_BEGIN);            // 移动文件的指针的位置才能正确的读取文件,否则可能失败            while(dwHasRead == 0)            {                printf("Print Any Key To Read File\r\n");                getchar();                if(ReadFile(hFile,szReadBuffer,0x200,&dwHasRead,NULL))                {                    printf("ReadFile Success :%d\r\n",dwHasRead);                    if(dwHasRead == dwHasWrite)                    {                        if(memcmp(szWriteBuffer,szReadBuffer,0x100))                        {                            printf("不一样\r\n");                            printf("szReadBuffer:%s\r\nszWriteBuffer:%s\r\n",szReadBuffer,szWriteBuffer);                        }                        else                        {                            printf("一样\r\n");                        }                    }                    else                    {                        printf("读取数据不够???\r\n");                        printf("szReadBuffer:%s\r\n",szReadBuffer);                    }                }                else                {                    printf("ReadFile Error :%d",GetLastError());                }            }        }        else        {            printf("WriteFile Error :%d",GetLastError());        }        printf("Print Any Key To DeleteFile\r\n");        getchar();        CloseHandle(hFile);        DeleteFile(_T("TempFile.txt"));        // rename(szWriteBuffer)    }    else    {        printf("CreateFile Error :%d",GetLastError());    }
  • 问题的关键是,在刚刚进行了WriteFile 之后,文件指针指向文件末尾,导致读取操作失败,重新设置文件指针即可
阅读全文
0 0