Lectura de Archivos Utilizando StreamReader
Puedes abrir y leer archivos utilizando el lenguaje de programación C#.
Para leer un archivo, se crea un nuevo objeto StreamReader
. El objeto StreamReader
recibe la ruta del archivo.
El término "objeto" se aclarará en secciones posteriores, pero para fines de comprensión: un objeto es simplemente una instancia de un tipo de dato, y StreamReader
es un tipo de dato al igual que int
o float
. Por lo tanto, los valores 1
, 2.5f
y "Hello World"
pueden considerarse técnicamente como "objetos" de los tipos de datos int, float y string respectivamente.
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
Aquí fileVarName
representa el nombre de la variable en la que se almacenará el objeto StreamReader, y fullPath
debe ser la ruta completa del archivo en forma de cadena de texto.
Por ejemplo, se puede abrir un archivo "text.txt" en el Escritorio que tiene la ruta C:/Users/Admin/Desktop/text.txt
:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
También se puede utilizar la declaración implícita para acortar ligeramente la sintaxis: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Considere que el archivo text.txt
tiene el siguiente contenido:
text.txt
12345This is some example text
Un objeto StreamReader
tiene un método ReadLine
que lee una línea del archivo y la retorna:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Salida:
This
El método ReadLine
cambia automáticamente el cursor a la siguiente línea, por lo que cuando se llama de nuevo, lee la siguiente línea si existe; de lo contrario, simplemente devuelve null
(nada):
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL
Salida:
This
is
some
example
text
Para leer todas las líneas de un archivo, se puede utilizar el bucle while
con una condición que verifica si la siguiente línea es null
o no. A continuación se muestra una forma sencilla de hacerlo:
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }
Salida:
This
is
some
example
text
Es posible hacer que el código anterior sea un poco más limpio utilizando un truco; para ello, revisemos las sentencias de asignación. Una sentencia de asignación también tiene un valor de retorno, que es el valor que se está asignando. Esto se puede entender con un ejemplo:
index.cs
12int a; Console.WriteLine(a = 7);
Salida:
7
Se muestra 7
porque la instrucción a = 7
retorna 7
, que es el valor asignado a a
.
Esta información permite realizar acciones creativas, como asignar el mismo valor a varias variables en una sola instrucción:
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Salida:
9
9
9
Utilizando esta información, es posible modificar el código de lectura de archivos para hacerlo más breve eliminando código innecesario:
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
Dentro de la condición, primero se utilizó una instrucción de asignación line = textFile.ReadLine()
, que actualiza automáticamente la variable line
y luego verifica si es null a partir del valor de retorno de la instrucción.
Después de leer el archivo, también se debe cerrarlo utilizando el método Close
; de lo contrario, puede causar fugas de memoria o el archivo puede quedar bloqueado y ser inaccesible desde otros lugares mientras el programa esté en ejecución.
El código final se verá así:
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you explain how the assignment inside the while loop works?
What happens if I forget to close the StreamReader?
Can you show how to handle errors when reading a file?
Awesome!
Completion rate improved to 2.04
Lectura de Archivos Utilizando StreamReader
Desliza para mostrar el menú
Puedes abrir y leer archivos utilizando el lenguaje de programación C#.
Para leer un archivo, se crea un nuevo objeto StreamReader
. El objeto StreamReader
recibe la ruta del archivo.
El término "objeto" se aclarará en secciones posteriores, pero para fines de comprensión: un objeto es simplemente una instancia de un tipo de dato, y StreamReader
es un tipo de dato al igual que int
o float
. Por lo tanto, los valores 1
, 2.5f
y "Hello World"
pueden considerarse técnicamente como "objetos" de los tipos de datos int, float y string respectivamente.
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
Aquí fileVarName
representa el nombre de la variable en la que se almacenará el objeto StreamReader, y fullPath
debe ser la ruta completa del archivo en forma de cadena de texto.
Por ejemplo, se puede abrir un archivo "text.txt" en el Escritorio que tiene la ruta C:/Users/Admin/Desktop/text.txt
:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
También se puede utilizar la declaración implícita para acortar ligeramente la sintaxis: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Considere que el archivo text.txt
tiene el siguiente contenido:
text.txt
12345This is some example text
Un objeto StreamReader
tiene un método ReadLine
que lee una línea del archivo y la retorna:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Salida:
This
El método ReadLine
cambia automáticamente el cursor a la siguiente línea, por lo que cuando se llama de nuevo, lee la siguiente línea si existe; de lo contrario, simplemente devuelve null
(nada):
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL
Salida:
This
is
some
example
text
Para leer todas las líneas de un archivo, se puede utilizar el bucle while
con una condición que verifica si la siguiente línea es null
o no. A continuación se muestra una forma sencilla de hacerlo:
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }
Salida:
This
is
some
example
text
Es posible hacer que el código anterior sea un poco más limpio utilizando un truco; para ello, revisemos las sentencias de asignación. Una sentencia de asignación también tiene un valor de retorno, que es el valor que se está asignando. Esto se puede entender con un ejemplo:
index.cs
12int a; Console.WriteLine(a = 7);
Salida:
7
Se muestra 7
porque la instrucción a = 7
retorna 7
, que es el valor asignado a a
.
Esta información permite realizar acciones creativas, como asignar el mismo valor a varias variables en una sola instrucción:
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Salida:
9
9
9
Utilizando esta información, es posible modificar el código de lectura de archivos para hacerlo más breve eliminando código innecesario:
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
Dentro de la condición, primero se utilizó una instrucción de asignación line = textFile.ReadLine()
, que actualiza automáticamente la variable line
y luego verifica si es null a partir del valor de retorno de la instrucción.
Después de leer el archivo, también se debe cerrarlo utilizando el método Close
; de lo contrario, puede causar fugas de memoria o el archivo puede quedar bloqueado y ser inaccesible desde otros lugares mientras el programa esté en ejecución.
El código final se verá así:
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
¡Gracias por tus comentarios!