2010-01-16 9 views

risposta

8

Credo che il la risposta è "non definita" dalla specifica del linguaggio.

L'offset di ricerca si basa su un'origine, quindi è possibile cercare un file più grande lungo max. Non puoi semplicemente cercare dall'inizio del file. Inoltre, l'oggetto file non deve supportare cercare di essere letto. C'è più informazioni nel FileStream.Seek Documentation

Forse qualcun altro lo sa meglio, ma non credo che ci sia una dimensione massima del file definita. Sarai vincolato da ciò che fai con i dati letti dal filesystem (ad esempio esaurendo la memoria per memorizzarlo, ecc.)

1

Questa sarebbe la mia ipotesi, ma ci sono altri vincoli, come le dimensioni del file imposte dal file system. Su NTFS sono 2 terabyte, ma su FAT32 sono 4 GB meno 2 byte, per esempio.

+0

Ho sempre pensato che il limite di dimensione del file su FAT32 fosse 2^32 - 1 byte? Hai una fonte per il limite di 2 Gb? –

+0

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

1

Il massimo teorico (non tenendo conto delle limitazioni del file system) è Int64.MaxValue, come si era intuito. Non sono sicuro di cosa succede se leggi un file più lungo di quello, ma sembra molto improbabile;)

+0

Solo 8388608 tebibyte ... un limite modesto;) – Skurmedel

4

È limitato solo dal file system. Seek() non è una funzione richiesta, i programmatori C/C++ hanno a che fare con il limite di fseek() di 2 gigabyte per molto tempo. Un sacco di accesso ai file è sequenziale. Tuttavia, la versione .NET funzionerà senza problemi per un po ', l'attuale file system di Windows (NTFS versione 6) limita la dimensione del file a 17.592.185.978.880 byte, ben a sud di 2^63 - 1.

Problemi correlati