c# - ¿Cuál es la diferencia entre File.ReadLines() y File.ReadAllLines()?
(3)
¿Hay alguna diferencia de rendimiento relacionada con estos métodos?
SÍ hay una diferencia
File.ReadAllLines()
método File.ReadAllLines()
lee todo el archivo a la vez y devuelve la cadena string [], por lo que lleva tiempo trabajar con archivos de gran tamaño y no se recomienda ya que el usuario tiene que esperar hasta que se devuelva toda la matriz.
File.ReadLines()
devuelve una IEnumerable<string>
y no lee todo el archivo de una sola vez, por lo que es realmente una mejor opción cuando se trabaja con archivos de gran tamaño.
Desde MSDN :
Los métodos ReadLines y ReadAllLines difieren de la siguiente manera:
Cuando utiliza ReadLines, puede comenzar a enumerar la colección de cadenas antes de que se devuelva toda la colección; cuando utiliza ReadAllLines, debe esperar a que se devuelva toda la serie de cadenas antes de poder acceder a la matriz. Por lo tanto, cuando trabaja con archivos muy grandes, ReadLines puede ser más eficiente.
Ejemplo 1: File.ReadAllLines()
string[] lines = File.ReadAllLines("C://mytxt.txt");
Ejemplo 2: File.ReadLines()
foreach (var line in File.ReadLines("C://mytxt.txt"))
{
//Do something
}
Esta pregunta ya tiene una respuesta aquí:
Tengo una consulta con respecto a File.ReadLines () y File.ReadAllLines (). Cuál es la diferencia entre ellos. Tengo un archivo de texto donde contiene datos en filas. File.ReadAllLines()
devuelve la matriz y usa File.ReadLines().ToArray();
¿También puedo obtener el mismo resultado? Entonces, ¿hay alguna diferencia de rendimiento relacionada con estos métodos?
string[] lines = File.ReadLines("C://mytxt.txt").ToArray();
O
string[] lines = File.ReadAllLines("C://mytxt.txt");
Abre un archivo de texto, lee todas las líneas del archivo y luego cierra el archivo.
Si tiene archivos pequeños o tiene que procesar el archivo completo a la vez, utilícelo ya que lee completamente el archivo, lo que significa que todo el archivo está en su memoria. En el caso de archivos grandes, puede ralentizar el rendimiento.
Con el método File.ReadLines, puede comenzar a enumerar la colección de cadenas antes de que se devuelva toda la colección.
Es útil si necesita procesar el archivo en trozos (no todo el archivo a la vez).
Observaciones indicadas en MSDN :
Los métodos ReadLines y ReadAllLines difieren de la siguiente manera:
Cuando utiliza ReadLines, puede comenzar a enumerar la colección de cadenas antes de que se devuelva toda la colección; cuando utiliza ReadAllLines, debe esperar a que se devuelva toda la serie de cadenas antes de poder acceder a la matriz. Por lo tanto, cuando trabaja con archivos muy grandes, ReadLines puede ser más eficiente.
Aquí hay más detalles y demostración de comparación disponible.
File.ReadLines
método File.ReadLines
devuelve IEnumerable<string>
. Pero File.ReadAllLines
devuelve la string[]
Si lees un archivo grande, es mejor que File.ReadLines
método File.ReadLines
. debido a que se lee línea tras línea desde el archivo, no se lee todo el archivo en la string[]
que requiere mucha memoria. MSDN