Daten Lesen/Schreiben
-
also der title hört sich wohl unkomplizierter an als es ist (oder doch nich ?)
Naja der auftrag ist:
Öffne Datei (evt. mehere 100MB)
ersezte byte 10 (0x0A) durch ;öffnen,lesen (mit 1024 buffer),abfragen nach byte 10
geht allesCFile xFile; xFile.Open("C:\\text.txt",CFile::modeReadWrite ,NULL); long x = 0; long y = xFile.GetLength(); BYTE pbuf[1024]; while (x < y) { x = x + (long) xFile.Read(pbuf,1024); for (int i = 0;i <= 1024;i++) { if(pbuf[i] == 0x0A) { //HIER GEHTs WEITER } } } xFile.Close();
Ok aber das ersetzen is noch nich ganz...
wie kann man mit CFile::Write()
an die richtigen stellen schreiben bzw. hat jemand dafür noch ne bessere lösung ?
-
Hi Timmy!
Würde vorschlagen du schreibst jede modifizierte Zeile in ein 2. File und nachdem alles gemacht ist, dann 1. File löschen und 2. File umbenennen (?)
lg,
Captain.
-
CFile xFile; if( xFile.Open("C:\\text.txt",CFile::modeReadWrite ,NULL)) { HANDLE hMap = CreateFileMapping( xFile, NULL, PAGE_READWRITE, 0, 0, NULL); if( hMap != INVALID_HANDLE_VALUE) { LBYTE pData = (LPBYTE)MapViewOfFile( hMap, FILE_MAP_WRITE, 0, 0, 0); LPBYTE pEnd=pData+(ULONG)xFile.GetLength(); for( LPBYTE pStart=pData; pStart<pEnd; pStart++) if( *pStart == 0x10) *pStart = ';'; UnmapViewOfFile( pData); CloseHandle( hMap); } }