none
modificar y borrar de un archivo txt una linea RRS feed

  • Pregunta

  • hola tengo dos problemas

    primero quiero modificar una linea de un archivo txt

    cada linea esta formada por ejemplo

    juan;123;donato

    pedro;567;rivera

    luis; 89; otro

    using (StreamReader file = new StreamReader(c:/archivo.txt))
                {
                    while ((line = file.ReadLine()) != null)//Leer linea por linea
                    {
                        parte = line.Split(';');
    
                        if (parte[1] == telefono)
                        {
                            // que debo poner aqui para modificar la linea
                        }
    
                    }
                                    
                }

    quiero segun el valor del segundo dato entre ; cambiar el primero pero no se como realizarlo yo hice esto pero no se como modificar solo una parte de esa linea

    mi segunda duda es como borro una linea seleccionada 

    using (StreamReader file = new StreamReader(c:/archivo.txt))
                {
                    while ((line = file.ReadLine()) != null)//Leer linea por linea
                    {
                        parte = line.Split(';');
    
                        if (parte[1] == telefono)
                        {
                            // borrar esta linea seleccionada
                        }
    
                    }
                                    
                }
    si me pueden ayudar gracias

    miércoles, 15 de julio de 2020 0:28

Todas las respuestas

  • Para modificar un archivo de texto, vas a tener que reescribir el archivo entero. No puedes borrar o modificar una línea.

    Hay dos soluciones: Una es cargar el archivo entero en memoria, borrar o cambiar la línea, y luego volver a grabar todas las líneas en disco. Puedes hacer esto mediante File.ReadAllLines, que te devuelve un array con todas las líneas. Entonces, en el array, modificas todo lo que quieras, y luego vuelcas al fichero el nuevo array usando File.WriteAllines.

    Si el archvo es demasiado grande como para cargarlo en memoria, entonces usas un archivo auxiliar en disco. Vas leyendo con el StreamReader, examinas cada línea que lees y la modificas o la omites según proceda, y entonces la salvas en el archivo auxiliar usando un StreamWriter. Cuando hayas terminado, borras el archivo original y renombras el auxiliar al nombre del original.

    miércoles, 15 de julio de 2020 6:00
    Moderador
  • Como crear, modificar y eliminar archivos TXT desde C#

    Como crear:

    Para crear un archivo txt desde c# es necesario utilizar un pequeño código que a continuación presentare, pero para ello es necesario hacer uso de la librería IO en c#.

    Ejemplo:

    using System;

    using System.IO;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    namespace txtArchivo

    {

        class Program

        {

            static void Main(string[] args)

            {

    string text = "Estamos creando un archivo TXT, Sonrie ;)" ;

    System.IO.File.WriteAllLines(@"C:\Users\Castro Valentin\Desktop\rosa.txt", text);

    Console.ReadLine();

            }

        }

    }

     

    Para modificar es necesario hacer uso de variables como en el siguiente ejemplo:

     

    using System;

    using System.IO;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    namespace txtArchivo

    {

        class Program

        {

            static void Main(string[] args)

            {

    string text ;

    Console.WriteLine("Escribe un mensaje”);

    text = Console.ReadLine();

    System.IO.File.WriteAllLines(@"C:\Users\Castro Valentin\Desktop\rosa.txt", text);

    Console.ReadLine();

            }

        }

    }

    O bien algo más complejo podría ser, en este caso ya estamos implementando el código que se utiliza para eliminar el archivo TXT desde c#:

    using System;

    using System.IO;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    /*Instituto Tecnologico de Tijuana

     *Alumna: Castro Hernández Rosa

     *# control: 13211518

     *Carrera: Ing. en Tecnologias de la Información y Comunicaciones

     *Materia: Programación Orientada a Objetos

     *# Practica: 1

     *UNIDAD: 6

     *Descripción: Crear, modificar y elimimar Archivos Txt*/

    namespace txtArchivo

    {

        class Program

        {

            static void Main(string[] args)

            {

                 int cont = 0, op = 0, s = 0;

     

                 Console.Title = "Archivo TXT";

               

                Console.WriteLine("Digita cantidad de productos: ");

                int l = int.Parse(Console.ReadLine())*2;

               

                string[] text = new string[l];

     

                   

                    for (int j = 0; j < l; j++)

                    {

                        if (op == 0)

                        {

                            Console.Write("Producto: ");

                            text[j] = Console.ReadLine();

                            op = 1;

                        }

                        else

                        {

                            Console.Write("$");

                            text[j] = Console.ReadLine();

                            cont = cont + int.Parse(text[j]);

                            op = 0;

                        }

     

                    }

                    s=l+3;

                    Array.Resize(ref text, s);

                   

                    Console.WriteLine("Subtotal: " + cont);

                    text[l ] = ""+cont;

                    Console.WriteLine("");

                    double iva = 0.16 * cont;

                    text[l + 1] = "" + iva;

                    Console.WriteLine("IVA 16%: " + iva);

                    Console.WriteLine("");

                    double total = iva + cont;

                    text[l + 2] = "" + total;

                    Console.WriteLine("Total: " + total);

               

                System.IO.File.WriteAllLines(@"C:\Users\Castro Valentin\Desktop\rosa.txt", text);

                Console.WriteLine("Desea Elimar el archivo digita 1: ");

                int d=int.Parse(Console.ReadLine());

                text = Console.ReadLine();

                if(d==1)

                {

                    System.IO.File.Delete(@"C:\Users\Castro Valentin\Desktop\rosa.txt");

                    Console.WriteLine("Tu archivo fue eliminado correctamente");

                }

                else

                {

                    Console.WriteLine("Tu archivo aun sigue en existencia");

                }

                Console.ReadLine();

            }

        }

    }

      

    Para elimina archivos TXT desde c# es necesario hacer uso del siguiente código:

    System.IO.File.Delete(@"C:\Users\Castro Valentin\Desktop\rosa.txt");

     

    Ejemplo:

    using System;

    using System.IO;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    namespace txtArchivo

    {

        class Program

        {

            static void Main(string[] args)

            {

    string text = "Estamos creando un archivo TXT, Sonrie ;)" ;

    System.IO.File.WriteAllLines(@"C:\Users\Castro Valentin\Desktop\rosa.txt", text);

    Console.WriteLine("Desea Elimar el archivo digita 1: ");

                int d=int.Parse(Console.ReadLine());

                if(d==1)

                {

                    System.IO.File.Delete(@"C:\Users\Castro Valentin\Desktop\rosa.txt");

                    Console.WriteLine("Tu archivo fue eliminado correctamente");

                }

                else

                {

                    Console.WriteLine("Tu archivo aun sigue en existencia");

                }

     

    Console.ReadLine();

            }

        }

    }

     


    miércoles, 15 de julio de 2020 6:29
  • ¿Te han funcionado las respuestas? Si nos puedes actualizar tu estado, sería genial!

    Saludos

    miércoles, 15 de julio de 2020 16:05
    Moderador
  • Hace unos días respondí a un usuario de otro foro de C# con una consulta que bien se puede ajustar a lo que solicitas.

    Se trata de un proyecto de consola que te permite ingresar registros, modificarlos o eliminarlos, así como generar listados del contenido en pantalla o por impresora.

    Veo que en este foro no me permite adjuntar ficheros, así que te indico un link en el que podrás descargarte el comprimido que contiene el proyecto. Creo que está bastante bien documentado y puedes sacar bastante partido del código si lo estudias y tratas de comprenderlo; tiene cierta complejidad pero si le dedicas tiempo estoy seguro que acabarás entendiendo todas sus tripas.

    No es un fichero de texto propiamente dicho, trabaja en modo binario con serialización de datos, pero si deseas unicamente trabajar con ficheros de texto, tendrás que hacer lo que te comentan en respuestas anteriores. De hecho el binario hace lo mismo; carga todos los datos en memoria y los vuelve a grabar al salir de la aplicación.

    Proyecto fichero binario de datosl

    Espero que te resulte útil.



    miércoles, 15 de julio de 2020 17:43