none
Concatenar caracter al final de cada linea de mi archivo txt RRS feed

  • Pregunta

  • Hola buenas tardes, tengo un archivo txt con una serie de cadenas de caracteres una debajo de la otra, pero necesito poder colocar una coma en al final de la cadena de cada linea de ese  archivo, lo logro recorrer y le coloco el carácter adicional, pero nose como guardar los cambios, les comparto el codigo:

      String line;
              string Path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase.ToString()).Remove(0, 6);
              string strRIF;

              try
              {
                  //Pass the file path and file name to the StreamReader constructor

            


            StreamReader sr = new StreamReader(Path + "\\Archivo.txt");


                  line = sr.ReadLine();


                  while (line != null)
                  {
                   
                      line = sr.ReadLine() + ",";
                      
                         'Como actualizo cada linea que voy rrecorriendo???      


                  }

                  //close the file
                  sr.Close();
                 
              }
              catch (Exception)
              {
                 
              }
              finally
              {
                
              }

    Espero me puedan ayudar, Gracias

    martes, 18 de diciembre de 2018 20:38

Respuestas

  • Solución sencilla para concatenar una coma al final de cada línea:

    File.WriteAllText(fichero, string.Join(",\r\n", File.ReadAllLines(fichero)));

    Otra solución sencilla:

    File.WriteAllText(fichero, File.ReadAllText(fichero).Replace("\r\n", ",\r\n");
    

    Esto presume que tus líneas están separadas por \r\n. Si solo tienen \n cámbialo en los dos sitios.

    Solución eficiente en caso de que el fichero sea muy grande y no quieras cargarlo completo en memoria:

    using (var sw = new StreamWriter(ficheroDestino))
    {
        using (var sr = new StreamReader(ficheroOrigen))
        {
            string linea;
            while(null != (linea = sr.ReadLine()))
            {
                sw.WriteLine(linea + ",");
            }
        }
    }

    Observa que para usar este método se necesita que el fichero que se lee y el que se graba sean distintos. No es posible modificar sobre la marcha las líneas de un fichero que está siendo leído con un StreamReader. Una vez terminado el proceso puedes borrar el fichero antiguo y renombrar el nuevo llamándolo igual que el antiguo.



    martes, 18 de diciembre de 2018 21:42
    Moderador