Autor
|
Tema: Modificar el contenido de una linea de un archivo de texto en c# (Leído 38,591 veces)
|
nico56
Desconectado
Mensajes: 246
|
Hola que tal, tengo un archivo de texto con una lista de personas y sus telefonos, por ejemplo asi: PEPITO;45879684; JUAN;42369851; JOSE;47896523;
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. public void modificar_telefono(string nombre,string telefono) { FileStream fs = new FileStream("cheques.txt", FileMode.Open); StreamReader sr = new StreamReader(fs); char[] x ={ ';' }; // delimitador
string[] campos= sr.ReadLine().Split(x);
while(!sr.EndOfStream) { if( campos[0] == nombre ) //aca deberia poner la instruccion para modifcar la linea
campos= sr.ReadLine().Split(x); }
fs.Close(); sr.Close();
}
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.
|
|
|
En línea
|
|
|
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
Esto lo cito de http://www.elguille.info/colabora/NET2005/svalsse_leyendo_y_escribiendo_archivos.htm : 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"); } }
|
|
|
En línea
|
|
|
|
Shell Root
|
Porque no usas Base de Datos? Tansiquiera Access, es mucho más comodo...
|
|
|
En línea
|
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
|
|
|
nico56
Desconectado
Mensajes: 246
|
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
|
|
|
En línea
|
|
|
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
Si sólo es un simple listín telefónico sería desaprobechar recursos una db, ¿no?
|
|
|
En línea
|
|
|
|
nico56
Desconectado
Mensajes: 246
|
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
|
|
|
En línea
|
|
|
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
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#) public void modificar_telefono(string nombre,string telefono) { FileStream fs = new FileStream("cheques.txt", FileMode.Open); StreamReader sr = new StreamReader(fs); char[] x ={ ';' }; // delimitador string[] campos= sr.ReadLine().Split(x); string fileName = "cheques.txt";
while(!sr.EndOfStream) { if( campos[0] == nombre ) //aca deberia poner la instruccion para modifcar la linea { // esto inserta texto en un archivo existente, si el archivo no existe lo crea StreamWriter writer = File.AppendText(fileName); writer.WriteLine(nombre+x+telefono+x); //abderramah-YO NO SE HACER CONCATENACIONES EN C# x es un char, ¿se puede concatenar a un string? writer.Close(); } campos= sr.ReadLine().Split(x); } fs.Close(); sr.Close(); } 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.
|
|
« Última modificación: 6 Enero 2010, 17:48 pm por ABDERRAMAH »
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
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)
|
|
|
En línea
|
|
|
|
[D4N93R]
Wiki
Desconectado
Mensajes: 1.646
My software never has bugs. Its just features!
|
Yo creo que es mejor serializar una colección de una clase tuya es más fácil, y menos líneas!
|
|
|
En línea
|
|
|
|
nico56
Desconectado
Mensajes: 246
|
Como lo serializo, busque información de eso pero no entiendo nada :S
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
leer archivo de texto linea a linea
Programación Visual Basic
|
SheKeL_C$
|
2
|
4,097
|
18 Febrero 2006, 17:08 pm
por SheKeL_C$
|
|
|
Modificar linea en archivo de texto
PHP
|
Riki_89D
|
4
|
4,429
|
8 Diciembre 2010, 17:11 pm
por Riki_89D
|
|
|
Ayudaaaaa no se como Modificar el contenido de una linea de un archivo de texto
Programación General
|
luiggi1990
|
0
|
2,235
|
11 Octubre 2011, 02:16 am
por luiggi1990
|
|
|
Consulta Batch encuentra archivo XML por contenido y modifica linea
Scripting
|
chepem2
|
1
|
2,989
|
31 Enero 2014, 19:45 pm
por Eleкtro
|
|
|
Guardar contenido de Texbox Multilinea en archivo de texto
Programación Visual Basic
|
rapbyone
|
2
|
3,122
|
14 Febrero 2014, 09:48 am
por rapbyone
|
|