Probleme mit seekp bei großen Dateien
-
Hey @all,
vorweg nur zur Info, mit großen Dateien meine ich >= 25 GB
Mein Problem ist nun das ich nicht weiter seeken kann als bis zum wert von LONG_MAX.
Wie kann ich in einer 25 GB Datei beispielsweise zum 24GB seeken und danach lesen bzw. schreiben?
Mit ios::cur hatte ich es schon probiert, komme trotzdem nur bis LONG_MAXHat jemand einen Rat für mich?
OS: 32 bit von Windows und linux
Lg _freeze_
-
WinAPI
-
Danke, und ausser WinAPI?
Wollte nicht die Dateioperationen für beide Systeme schreiben.
Gibts da nicht auch was ansi kompatibles mit fstream oder den C Funktionen (fopen, usw.) daraus?
Lg _freeze_
-
habe doch noch eine Lösung gefunden:
// Für Windows // mit fopen öffnen _fseeki64(pFile, _offset, SEEK_SET); // Für Linux // mit fopen64 öffnen // Kompilieren mit -D __USE_FILE_OFFSET64 -D __USE_LARGEFILE _fseeko64(pFile, _offset, SEEK_SET);der Rest wie fwrite,fread und fclose bleiben gleich
oder mittels Präprocessor
FILE *pFile = NULL; . . . #if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(__TOS_WIN__) pFile = fopen("filename.ext", "rb+"); #elif defined(linux) || defined(__linux) pFile = fopen64("filename.ext", "rb+"); #endif . . . if(pFile != NULL) { #if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(__TOS_WIN__) _fseeki64(pFile, _offset, SEEK_SET); #elif defined(linux) || defined(__linux) _fseeko64(pFile, _offset, SEEK_SET); #endif } . . . fclose(pFile);Lg _freeze_