Quiero enseñarles como tomar datos de un archivo externo en forma de texto plano con C# de .NET. No se si es bien recibido un tutorial de C# pero me pareció buena idea aportar algo de esto que hace bastante esta creciendo.
Necesitaremos algunas herramientas para poder programar en C#:
- .Net Framework 3.5 SP1 o superior
- SharpDevelop, visual c# o cualquier otro IDE
- Conocer las bases de programar en C#
Código para cargar los datos de un archivo de texto en C#
Iniciamos el IDE y creamos un proyecto le ponemos el nombre que usted quiera, en mi caso sera "ejemplo".
Lee los comentarios del código para entender su funcionamiento.
Código :
using System; using System.IO; using System.Collections; namespace ejemplo { public class ejemplo { string sLine=""; // Creamos un string donde se guardaran las lineas del archivo int line = 0; // Leemos el numero de linea comenzando por 0 string valor1 = ""; // Creamos un string string valor2 = ""; // Creamos un string ArrayList arrText = new ArrayList(); // Creamos una matriz para guardar linea por linea StreamReader objLeer = new StreamReader("archivo.txt"); // Creamos el objeto "objLeer" desde una funcion de la libreria IO. // La extension del archivo puede ser .txt o .cfg, .ini, .inc, etc /* Creamos while para que lea todas las lineas e agrege un item a la matriz, si sLine no es nulo. Despues lo que realiza es un if, cumpliendo la misma condicion del bucle while*/ while (sLine != null) { sLine = objLeer.ReadLine(); if (sLine != null) arrText.Add(sLine); } //Cerramos el archivo objLeer.Close(); /*Realizamos un bluce foreach, recojemos datos de la matriz arrText y la volcamos en el string sOutput. foreach se utiliza muchos en casos de matriz lo que hace es tomar una coleccion de datos de la matriz y ir volcandolo. como hariamos con un for int[] matriz = new int[] { 0, 1, 2, 3 }; int leer = 0; for(int i = 0; i < 4; i++) { leer = matriz[i]; } Seguimos con el tema, dentro del foreach hacemos un switch para verificar en que linea nos encontramos, esto lo hacemos para poder identificar cada linea y haci asignarle una variable a la linea. */ foreach (string sOutput in arrText) { switch(line) { case 0: { valor1 = sOutput; break;} case 1:{ valor2 = sOutput; break;} } line++; } /* y en resultado tenemos datos volcados en cada una de las variable. Hagamos un ejemplo que yo hubiera tenia un txt con 2 lineas adentro: hola Como estas entonces valor1 = hola y valor2 = Como estas */ } }
Finalmente creamos un archivo con lineas adentro y compilarlo.
Cabe aclarar que:
Código :
StreamReader objLeer = new StreamReader("archivo.txt");El nombre del archivo puede tener ruta por si el archivo no se encuentra en el mismo directorio que el programa
Bueno espero que les sirva un saludo.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Freddie el 04 de Febrero de 2011
Por apuu el 05 de Febrero de 2011
Por Julian el 06 de Febrero de 2011
Por Julian el 07 de Febrero de 2011
1) Estas haciendo dentro del while un if (sline != null) , cuando la condicion del while es esa (osea, al pedo), pero el if lo haces por que la primera vez no comprobas que lo que leiste no sea null, y eso va a preguntarlo todas las veces haciendolo mas ineficiente.
2) el foreach y el switch estan completamente al pedo, podrias haber usado el contador dentro del while directamente para contar las lineas (igual me parece al pedo contar las lineas, de ultima metias las lineas en un arreglo de strings y te guiabas por el indice del arreglo o algo por el estilo, pero a lo que me refiero es que podias hacer todo dentro del while)
3) lo de la matriz que inicializaste con 0 , 1 , 2 , 3, todavia no lo entiendo, jaja, es ridiculo.
4) Cual es la ensenianza del tutorial? aprender a leer un archivo de texto? no entiendo ..
lo mas ridiculo del algormitmo fue el foreach y dentro el switch , hay muchas mejores formas de hacerlo, aparte si queres que lea 3 lineas en vez de 2 , tenes que modificarlo.
Por apuu el 12 de Febrero de 2011
Por julian el 13 de Febrero de 2011
string archivo = "archivo.txt";
string linea = "";
StreamReader reader = new StreamReader(archivo);
while ( (linea = reader.ReadLine() ) != null )
{
count++;
MessageBox.Show( string.Format("linea numero {0} : {1} ",count,linea));
}
Por julian el 13 de Febrero de 2011
Por Tyreal el 13 de Mayo de 2011
http://foros.cristalab.com/ayuda-con-codigos-en-c--t97677/#603987
Por raul el 25 de Mayo de 2011
Por marce el 09 de Enero de 2012
Por Ruben Sanchez el 01 de Junio de 2012
Por Yeison el 28 de Febrero de 2013
Por Nicolas el 20 de Febrero de 2014
Por FMC el 05 de Enero de 2015