c++ - manejo - Escribir archivo grande
manejo de archivos en c (3)
En NTFS, el único límite real es el tamaño del volumen. Si desea probar esto, puede crear un archivo ficticio usando la línea de comando:
fsutil file createnew [nombre de archivo] [fechada de validez]
Ex:
fsutil file createnew TestFile.bin 65536000000
Eso debería crear un archivo de 64 GB suponiendo que tiene un volumen NTFS.
Intento escribir en un archivo grande, pero parece que no funciona para archivos de más de 2 GB. Lo he intentado con boost :: iostreams :: file_sink. ¿Es solo un límite con el flujo de impulso? ¿Hay alguna otra forma en que pueda escribir un archivo grande en Win64 y Win32?
En Win32 / 64, ReadFile & WriteFile puede escribir archivos de más de 4 gb. El posicionamiento se realiza mediante un valor _LARGE_INTEGER de 64 bits en SetFilePointerEx . Del mismo modo, para obtener el tamaño de archivo, necesita GetFileSizeEx y no el GetFileSize básico.
Esto depende de:
- El sistema de archivos que estás usando. Los viejos sistemas de archivos como FAT solo permiten archivos de hasta 2GB. Use NTFS.
- Su biblioteca debe compilarse para permitir archivos de gran tamaño (desplazamientos de búsqueda de 64 bits). Si usan entradas de 32 bits para buscar en el archivo (compruebe los argumentos y los resultados de las llamadas "buscar" y "decir"), solo puede acceder a 2 GB (2 ^ 31 bits, el 32 es el signo +/-)
Esto también podría ayudar: http://www.boost.org/doc/libs/1_37_0/libs/iostreams/doc/faq.html#offsets