Título: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: nico56 en 6 Enero 2010, 15:48 pm Hola que tal, tengo un archivo de texto con una lista de personas y sus telefonos, por ejemplo asi:
Código: PEPITO;45879684; Y tengo que hacer una funcion que reciba en un parametro el nombre de la persona, y en otro un nuevo telefono que lo debe reemplazar en el archivo. Código:
He probado creando un nuevo archivo, copiando todo hasta encontrar la linea y seguir copiando pero me parece una forma muy chota de hacerlo. Desde ya gracias y saludos. Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: ABDERRAMAH en 6 Enero 2010, 15:54 pm Esto lo cito de http://www.elguille.info/colabora/NET2005/svalsse_leyendo_y_escribiendo_archivos.htm :
Citar Leyendo desde un archivo usando BufferedStream using System; using System.Text; using System.IO; static void Main(string[] args) { string path = "c:\\sample\\sample.xml"; Stream instream = File.OpenRead(path); // crear buffer para abrir stream BufferedStream bufin = new BufferedStream(instream); byte[] bytes = new byte[128]; // leer los primeros 128 bytes del archivo bufin.Read(bytes, 0, 128); Console.WriteLine("Allocated bytes: "+Encoding.ASCII.GetString(bytes)); } Leyendo desde un archivo de texto using System; using System.IO; static void Main(string[] args) { string fileName = "temp.txt"; FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read); StreamReader reader = new StreamReader(stream); while (reader.Peek() > -1) Console.WriteLine(reader.ReadLine()); reader.Close(); } Escribiendo en un archive de texto using System; using System.IO; static void Main(string[] args) { string fileName = "temp.txt"; FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write); StreamWriter writer = new StreamWriter(stream); writer.WriteLine("Esta es la primera línea del archivo."); writer.Close(); } Creando un archivo y escribiendo en este Este ejemplo usa el método CreateText() el cual crea un Nuevo archive y retorna un objeto StreamWriter que escribe a un archivo usando formato UTF-8. using System; using System.IO; static void Main(string[] args) { string fileName = "temp.txt"; StreamWriter writer = File.CreateText(fileName); writer.WriteLine("Este es mi Nuevo archivo creado."); writer.Close(); } Insertando texto en un archivo using System; using System.IO; static void Main(string[] args) { try { string fileName = "temp.txt"; // esto inserta texto en un archivo existente, si el archivo no existe lo crea StreamWriter writer = File.AppendText(fileName); writer.WriteLine("Este es el texto adicionado."); writer.Close(); } catch { Console.WriteLine("Error"); } } Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: Shell Root en 6 Enero 2010, 16:33 pm Porque no usas Base de Datos? Tansiquiera Access, es mucho más comodo... ;)
Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: nico56 en 6 Enero 2010, 17:18 pm No es mucho una base de datos para eso? Es una aplicacion muy simple :S. La idea era reemplazar una linea del archivo de texto :S
Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: ABDERRAMAH en 6 Enero 2010, 17:24 pm Si sólo es un simple listín telefónico sería desaprobechar recursos una db, ¿no?
Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: nico56 en 6 Enero 2010, 17:33 pm Mas haya que valga la pena o no usar una base de datos, como puedo modificar una linea de un archivo de texto con c# ? :S
Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: ABDERRAMAH en 6 Enero 2010, 17:42 pm El problema es mi nivel de C#, que es muy básico, lo que no se hacer y ahora no tengo tiempo de mirar es cómo concatenar strings, yo en vb lo haría así:
writer.writeline(cstr(nombre&";"&telefono&";")) en un algoritmo como el tuyo sería así (aunque ya te digo que la concatenación de nombre+;+telefono+; no está bien hecha en codigo c#) Código: public void modificar_telefono(string nombre,string telefono) examina esto, tiene fallos porque yo lo que programo no es C#, mira la linea donde se escribe y concatena bien las variables a ver si te va. Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: raul338 en 6 Enero 2010, 17:45 pm No se si sea conveniente modificar la linea solamente, lo mejor (para mi) (sin usar base de datos) es que pases todo a un hashtable o lista, y desde ahi lo modificas y lo guardas todo en uno, puede ser mas largo, pero seria mejor que recorrer toda una linea y sobreescribirla, ademas, se puede hacer eso?? xD (capaz usando Peek y Write)
Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: [D4N93R] en 6 Enero 2010, 19:14 pm Yo creo que es mejor serializar una colección de una clase tuya :) es más fácil, y menos líneas!
Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: nico56 en 6 Enero 2010, 19:28 pm Como lo serializo, busque información de eso pero no entiendo nada :S
Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: MANULOMM en 6 Enero 2010, 19:59 pm utiliza un archivo XML u utilizas todos los controles y clases de acceso a datos, asi te evitaras problemas y sera como una base de datos.
Un DataSet Tipado, creas la tabla con la estrucutra y lo guardas con un metodo que tiene el dataset. WriteToXML(string File) creo que es ese. Atentamente, Juan Manuel Lombana Medellín - Colombia Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: raul338 en 6 Enero 2010, 20:05 pm Mira este codigo, tal vez te sirva, no es la forma mas efectiva de hacer lo que te dije, y ademas, le faltan metodos
Quise probar el visual studio 2010 pero me anda re lento asi que .... no es mi mejor intento ;-) Código
EDIT: utiliza un archivo XML u utilizas todos los controles y clases de acceso a datos, asi te evitaras problemas y sera como una base de datos. Tambien es otra buena opcion, hay miles de formas de resolver tu problema ;D ya sea "a mano" o con clases del .netUn DataSet Tipado, creas la tabla con la estrucutra y lo guardas con un metodo que tiene el dataset. WriteToXML(string File) creo que es ese. Atentamente, Juan Manuel Lombana Medellín - Colombia Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: seba123neo en 7 Enero 2010, 01:15 am Hola, usa archivos de acceso aleatorio para hacer eso.aca tenes un ejemplo:
VB.NET Solution for working with random files (http://www.codeproject.com/KB/files/ybrandomfile.aspx) tenes una estructura UDT y volcas todos esos datos al archivo. casi todas las agendas simples estan realizadas asi. saludos. Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: nico56 en 8 Enero 2010, 14:07 pm HOla de vuelta, gracias por las respuestas, al final lo pude hacer andar, lo que hice fue leer el archivo y montar todo en una lista, modificaba lo que queria, creaba un archivo temporal con el contenido de la lista y reemplazaba el temporal por el orginal.
Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: monal en 12 Noviembre 2013, 05:38 am Podrias mandarme el codigo que utilzaste?:D
Título: Re: Modificar el contenido de una linea de un archivo de texto en c# Publicado por: Eleкtro en 12 Noviembre 2013, 07:21 am Podrias mandarme el codigo que utilzaste?:D ¿Podrías leer las normas?. Has revivido un tema de hace 3 años para formular una pregunta irrelevante a alguien que ni siquiera va a leer tu mensaje. Citar Última vez activo: 12 Septiembre 2010, 00:57 Fíjense un poco mejor en los detalles importantes. PD: La manipulación de texto es algo muy sencillo, en Google y en el buscador del foro encontrarás cientos de ejemplos, y aquí encontrarás algún que otro código de ayuda el cual puedes convertir online a C#: http://foro.elhacker.net/net/libreria_de_snippets_posteen_aqui_sus_snippets-t378770.0.html Si sigues teniendo dudas, formula una pregunta en un nuevo post. Cierro el tema, saludos! |