elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Modificar el contenido de una linea de un archivo de texto en c#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Modificar el contenido de una linea de un archivo de texto en c#  (Leído 38,471 veces)
nico56

Desconectado Desconectado

Mensajes: 246


Ver Perfil
Modificar el contenido de una linea de un archivo de texto en c#
« 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;
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.


Código:

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 Desconectado

Mensajes: 431


en ocasiones uso goto ¬¬


Ver Perfil WWW
Re: Modificar el contenido de una linea de un archivo de texto en c#
« Respuesta #1 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");
    }
}


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: Modificar el contenido de una linea de un archivo de texto en c#
« Respuesta #2 en: 6 Enero 2010, 16:33 pm »

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 Desconectado

Mensajes: 246


Ver Perfil
Re: Modificar el contenido de una linea de un archivo de texto en c#
« Respuesta #3 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
En línea

ABDERRAMAH


Desconectado Desconectado

Mensajes: 431


en ocasiones uso goto ¬¬


Ver Perfil WWW
Re: Modificar el contenido de una linea de un archivo de texto en c#
« Respuesta #4 en: 6 Enero 2010, 17:24 pm »

Si sólo es un simple listín telefónico sería desaprobechar recursos una db, ¿no?
En línea

nico56

Desconectado Desconectado

Mensajes: 246


Ver Perfil
Re: Modificar el contenido de una linea de un archivo de texto en c#
« Respuesta #5 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
En línea

ABDERRAMAH


Desconectado Desconectado

Mensajes: 431


en ocasiones uso goto ¬¬


Ver Perfil WWW
Re: Modificar el contenido de una linea de un archivo de texto en c#
« Respuesta #6 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)
 {
      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 Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Modificar el contenido de una linea de un archivo de texto en c#
« Respuesta #7 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)
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Modificar el contenido de una linea de un archivo de texto en c#
« Respuesta #8 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!
En línea

nico56

Desconectado Desconectado

Mensajes: 246


Ver Perfil
Re: Modificar el contenido de una linea de un archivo de texto en c#
« Respuesta #9 en: 6 Enero 2010, 19:28 pm »

Como lo serializo, busque información de eso pero no entiendo nada :S
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines