2010-01-16 16 views

Respuesta

8

Creo que la respuesta está "indefinida" según la especificación del idioma.

La compensación de búsqueda se basa en un origen, por lo que puede buscar un archivo de mayor longitud máxima. Simplemente no puedes buscar desde el inicio del archivo. Además, el objeto de archivo no tiene que admitir buscar para ser leído. Hay más información en el FileStream.Seek Documentation

Tal vez alguien más lo sepa mejor, pero no creo que haya un tamaño máximo de archivo definido. Estará limitado por lo que hace con los datos leídos del sistema de archivos (por ejemplo, quedando sin memoria para almacenarlo, etc.)

1

Esa sería mi suposición, pero hay otras restricciones, como el tamaño de archivo impuesto por el sistema de archivos. En NTFS es de 2 Terabytes, pero en FAT32 es de 4GB menos 2 Bytes, por ejemplo.

+0

Siempre pensé que el límite de tamaño de archivo en FAT32 era 2^32 - 1 bytes? ¿Tienes una fuente para el límite de 2 Gb? –

+0

Solucionado ... http: //www.ntfs.com/ntfs_vs_fat.htm –

1

El máximo teórico (sin tener en cuenta las limitaciones del sistema de archivos) es Int64.MaxValue, como habrás adivinado. No estoy seguro de qué sucede si lee un archivo más largo que eso, pero parece muy poco probable;)

+0

Solo 8388608 tebibyte ... un límite modesto;) – Skurmedel

4

Solo está limitado por el sistema de archivos. Seek() no es una función requerida, los programadores de C/C++ han tratado con el límite de fseek() de 2 gigabytes durante mucho tiempo. Gran cantidad de acceso a archivos es secuencial. Sin embargo, la versión de .NET va a funcionar sin problemas durante un tiempo, el sistema de archivos de Windows actual (NTFS versión 6) limita el tamaño del archivo a 17.592.185.978.880 bytes, muy al sur de 2^63 - 1.

Cuestiones relacionadas