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

xiaoxiao2021-02-28  129

先贴代码

// // 文件映射操作 // 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 之后,文件指针指向文件末尾,导致读取操作失败,重新设置文件指针即可
转载请注明原文地址: https://www.6miu.com/read-69085.html

最新回复(0)