Se si utilizza ReadToEnd
, sono uguali. In caso contrario, l'utilizzo di StreamReader
consente di leggere byte alla volta, eseguire alcuni calcoli con essi e quindi eliminarli in base alle esigenze. Ad esempio, se si ha un file contenente un elenco di 2.000 numeri, e si vuole aggiungere insieme, si potrebbe:
- chiamata
File.ReadAllText
di leggere tutto in una stringa e poi analizzare attraverso quella stringa per calcolare la somma .
- Oppure è possibile creare un numero
StreamReader
e leggere alcuni byte alla volta, calcolando la somma man mano che si procede.
La principale differenza tra questi due approcci è l'utilizzo della memoria temporanea. Dopo aver ottenuto la somma, puoi sempre eliminare tutti i dati intermedi. Nell'approccio File.ReadAllText
, ad un certo punto si aveva l'intero contenuto del file in memoria, mentre con l'approccio StreamReader
, si avevano solo pochi byte del contenuto del file in memoria in qualsiasi momento. Questo può essere un problema a seconda della dimensione dei tuoi file e del tipo di calcolo che stai facendo.
File.ReadAllText
è conveniente e veloce. StreamReader
è potente ma più efficace.
fonte
2010-08-23 07:19:44