Sto scrivendo un programma C++ per leggere/scrivere un file di grandi dimensioni (probabilmente più grande di 60 GB). Googling il problema, sembra che ci sia un limite di 2 GB sul file io nel sistema a 32 bit (sto usando Windows 7 a 64 bit, ma il mio programma è stato compilato con mingw32). Nel mio programma, sto scrivendo 10 interi alla volta nel file e tutti questi numeri sono generati casualmente in base ad alcuni algoritmi. Sembra che il programma possa essere eseguito anche quando le dimensioni del file superano i 40 GB, ma non c'è modo per me di verificare se i dati letti dal programma sono effettivamente quelli memorizzati nel file o alcuni numeri di posta indesiderata. Ma comunque, il programma non riporta alcun avvertimento o errore. È davvero possibile leggere/scrivere file più grandi di 60 GB in un programma a 32 bit?esiste un limite di 2G per la lettura/scrittura di file da parte di C++ fstream?
risposta
Esiste un limite per le dimensioni del file (massimo 4 GB, credo) sul file system Fat32. Windows 7 sicuramente non dovrebbe usare quel filesystem di default.
Anche sul sistema a 32 bit esiste un limite per le dimensioni del file che è possibile mappare in memoria in una sola volta utilizzando CreateFileMapping/MapViewOfFile. Tuttavia, fstream non utilizza CreateFileMapping/MapViewOfFile internamente, quindi non c'è limite alla dimensione del file (oltre ai limiti del filesystem). E anche con CreateFileMapping puoi mappare porzioni di file più grandi in memoria, quindi non c'è limite oltre a quello imposto dal filesystem.
oh, se fstream non ha veramente un limite sulle dimensioni del file, sarà una grande notizia per me dato che non ho idea di come spezzare il mio file in pezzi per evitare il limite di 4 GB. Grazie – user1285419
"Windows 7 sicuramente non dovrebbe usare quel filesystem di default." - Questa affermazione è troppo ampia. Tuttavia, poiché la domanda riguarda un file da 40 GB o 60 GB, probabilmente non si trova nella memoria flash USB. –
@Windowsprogrammer: exFAT – SigTerm
- 1. Esiste un limite per la dimensione di HTML5 Manifest?
- 2. Recupero descrittore di file da uno std :: fstream
- 3. Esiste un modo per ignorare il limite maxRequestLength di caricamenti di file da 2 GB?
- 4. Esiste un limite di lunghezza per i file di testo creati da Perl?
- 5. Creazione oggetto fstream da un puntatore FILE *
- 6. Esiste un limite per PHP file_get_contents?
- 7. Esiste un limite massimo per l'output di PDO :: debugDumpParams?
- 8. Esiste un limite per setTimeout?
- 9. C equivalente alla sbirciatina di fstream
- 10. Esiste un limite di richieste HTTP simultanee per Silverlight?
- 11. Errore fstream in C++
- 12. Esiste la sintassi YAML per la condivisione di parte di un elenco o di una mappa?
- 13. Esiste un limite al numero di attività?
- 14. C++ fstream - creazione di propri flag di formattazione
- 15. Esiste una libreria C diffusa per la lettura di coppie nome/valore da un file?
- 16. Esiste un limite per la lunghezza della chiave per localStorage?
- 17. Come restituire un fstream (C++ 0x)
- 18. Leggere parte di appSettings da un file di configurazione esterno
- 19. Esiste un limite per i lavoratori di Firefox?
- 20. Esiste un limite di memoria per il browser Google Chrome?
- 21. Come accodare a un file con fstream fstream :: flag di app sembra non funzionare
- 22. Creazione di file zip da un flusso di memoria C#
- 23. Esiste un limite di dimensioni per pubblicare un file usando curl?
- 24. std :: fstream non crea file
- 25. Controlla se un fstream è un file o una directory
- 26. Esiste qualche limite di dimensione per il post di ajax?
- 27. estrarre la parte di data da DateTime in C#
- 28. Esiste un repository di libreria per C?
- 29. Aggiornare solo una parte di un file binario con C++
- 30. Esiste un limite alla complessità di un tipo da dedurre dalla val di Lombok?
Possibile duplicato di http://stackoverflow.com/questions/301995/write-large-file –
Penso che il collegamento fornito da Carey Gregory risponda alla domanda di limite del file da 2 GB. Perché non c'è modo per voi di controllare che i numeri siano scritti correttamente? Invece di scrivere numeri casuali, è possibile testare scrivendo la sequenza di numeri da 0 a 2.147.483.647 (tutti i numeri interi positivi a 32 bit), che sarà un file da 8 GB, quindi rileggerlo. – gbulmer