none
como actualizar y borrar lineas especificas de un archivo .txt desde c#? RRS feed

  • Pregunta

  • verán a partir de un listBox agrego sus items a un archivo .txt, el problema que tengo es que si quiero por ejemplo:
    +------------------------+                                                                  +------------------------+      

    +  pablo                       +                        *  modificar renglón 2 a 17.  +  pablo                     +

    + 18                             + }archivo .txt -->  (modificar documento -->  + 17                          + }archivo .txt  

    +  programacion           +                             .txt desde c#)                 +  programacion         +  

    +...                               +                                                                    +...                           + 

    y el otro problema seria que a partir de c# elimine lineas de un documento txt

    +------------------------+                                                                  +------------------------+      

    +  pablo                     +                        *  eliminar renglón 2.           +  pablo                      +

    + 18                          + }archivo .txt -->  (modificar documento -->  +  programacion          + }archivo .txt  

    +  programacion         +                             .txt desde c#)                 +  2do. semestre         +  

    +...                           +                                                                    +...                            + 


    • Editado Pablo Huizar miércoles, 21 de febrero de 2018 3:39
    miércoles, 21 de febrero de 2018 3:38

Respuestas

  • En general es dificilísimo actualizar y borrar lineas en un archivo txt. El problema es que son líneas de longitud variable, por lo que cualquier cambio supone "mover" todo el contenido del archivo posterior a la ubicación del cambio.

    Para evitar el problema, y si los archivos son de tamaño moderado (no más de unos cientos de megabytes), lo que se hace es cargar el fichero en memoria, modificarlo en memoria, y regrabarlo por completo en disco.

    Para leerlo a un array de strings se puede usar el método File.ReadAllLines (en System.IO).

    Después se borran o modifican las líneas del array.

    Y para salvarlo de nuevo, File.WriteAllLines.

    miércoles, 21 de febrero de 2018 9:26
    Moderador
  • hola

    >>y el otro problema seria que a partir de c# elimine lineas de un documento txt

    no puede eliminar lineas, para esto deberas recrear el archivo

     Recorrer un fichero txt y eliminar determinadas lineas

    sino la otra es levantar todo el file a memoria, trabajar los datos y luego volcar al archivo el resultado final

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 21 de febrero de 2018 12:45

Todas las respuestas

  • En general es dificilísimo actualizar y borrar lineas en un archivo txt. El problema es que son líneas de longitud variable, por lo que cualquier cambio supone "mover" todo el contenido del archivo posterior a la ubicación del cambio.

    Para evitar el problema, y si los archivos son de tamaño moderado (no más de unos cientos de megabytes), lo que se hace es cargar el fichero en memoria, modificarlo en memoria, y regrabarlo por completo en disco.

    Para leerlo a un array de strings se puede usar el método File.ReadAllLines (en System.IO).

    Después se borran o modifican las líneas del array.

    Y para salvarlo de nuevo, File.WriteAllLines.

    miércoles, 21 de febrero de 2018 9:26
    Moderador
  • hola

    >>y el otro problema seria que a partir de c# elimine lineas de un documento txt

    no puede eliminar lineas, para esto deberas recrear el archivo

     Recorrer un fichero txt y eliminar determinadas lineas

    sino la otra es levantar todo el file a memoria, trabajar los datos y luego volcar al archivo el resultado final

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 21 de febrero de 2018 12:45
  • gracias por el LINK me sirvió mucho!!
    miércoles, 21 de febrero de 2018 23:08