none
Borrar varias lineas discontinuas de un archivo RRS feed

  • Pregunta

  • Hola que tal? Les hago una consulta, debe ser una huevada para varios pero como no estoy ene el tema no se hacerlo.


    Tengo un archivo de texto que es .txt.bak el cual tiene mas de 40.000 lineas, lo que quiero hacer es borrar 15 lineas especificas.

    Por ejemplo:

    Archivo: prueba.txt

    Contenido

    Pedro

    Juan

    Andres

    Toto

    Miguel

    Julian

    Es un archivo con 6 lineas. Pedro es la 1 y Julian es la 6

    Quiero borrar la linea 2 y la 5 (por ejemplo) y que quede el nuevo archivo de texto:

    Pedro

    Andres

    Toto

    Julian

    Que pasa? Cuando borro la linea 2, automáticamente, todo lo que esta abajo, sube una linea, ósea que luego doy en comando borrar a Miguel (linea 5) en realidad pasa a ser la 4 luego de borrar a Juan.

    No se si me explico

    Espero que me puedan ayudar :)

    jueves, 24 de julio de 2014 18:32

Todas las respuestas

  • using System;
    using System.Text;
    using System.IO;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                StreamReader lee = new StreamReader(@"prueba.txt", Encoding.Default);
                StreamWriter escribe = new StreamWriter(@"prueba1.txt", false, Encoding.Default);
                int[] borrar = { 2, 5 };
                string lin;
                int nLin = 0;
    
                while ((lin = lee.ReadLine()) != null)
                {
                    nLin++;
                    if (Array.IndexOf(borrar, nLin) != -1) continue;
                    escribe.WriteLine(lin);
                }
    
                lee.Close();
                escribe.Close();
            }
        }
    }
    

    jueves, 24 de julio de 2014 19:11
  • hola

    el archivo es muy grande ? porque podrias usar

    string[] lineas = File.ReadAllLines("ruta file");
    
    //aqui rememueves del array las lineas
    
    File.WriteAllLines("ruta", lineas);


    o se vuelcas a memoria para trabjar mas simple el archivo

    solo si este es de muchos megas no seria recomendado, si solo son algunos kb simple de implementar

    Nota: recuerda agregar el using a System.IO para poder usar la clase File

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 24 de julio de 2014 19:21
  • Hola, mil gracias por tu respuesta. Mira, el archivo no pesa nada, (154kb) pero tiene 7328 lineas, de as cuales necesito borrar 19. Si hay que hacerlo una vez, no hay problema, busco las 19 lineas y las borro. Pero tengo que hacerlo todos los días, ya que el archivo se actualiza (puede ser que se agreguen lineas), y lo que a mi me da el sistema es un mensaje de error con las lineas que tengo que borrar (que son siempre las mismas) pero si el día de mañana se arena otra, ya sabiendo cual es y tendiendo algúna forma de hacerlo mecanizado seria mas fácil. Si queres te pedo pasar x algún lado el archivo y las lineas a borrar, y me decís cual seria el comando (no tengo mucha idea como ejecuarlo tampoco)

    MIL GRACIAS DE VERDAD :)

    jueves, 24 de julio de 2014 20:26
  • Muchas gracias, te hago una consulta, como corro eso?, ósea como lo ejecuto?

    MIL GRACIAS :)

    jueves, 24 de julio de 2014 20:28