SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: Lockter en Miércoles 16 de Abril de 2008, 12:16

Título: Liberar Un Fichero De Texto.
Publicado por: Lockter en Miércoles 16 de Abril de 2008, 12:16
Hola,

Tengo un pequeño problema. Hay un archivo que leo al principio del programa para coger unos datos.
Uso el siguiente codigo:
            string a;
            using (StreamReader re = new StreamReader("BD.txt"))
            {
                // FileInfo bd = new FileInfo("BD.txt");
                //StreamReader re = bd.OpenText();
                a = re.ReadLine();
                re.DiscardBufferedData();
                re.Close();
                re.Dispose();
            }

Si luego más tardo quiero escribir en él no me deja.
Este es el código:
                    using (StreamWriter sw = new StreamWriter("BD.txt"))
                    {
                        sw.WriteLine(ServidorBox.Text);
                        sw.Close();
                    }

Me da fallo de que el archivo esta siendo usado por otro.

Muchas gracias.
Título: Re: Liberar Un Fichero De Texto.
Publicado por: ProfesorX en Miércoles 16 de Abril de 2008, 18:42
Tal vez la forma en que lo haces no es la correcta, prueba utilizando System.IO. File.OpenText y System.IO.File.AppendText como en el siguiente ejemplo:

Código: Text
  1.  
  2.         static void Main(string[] args)
  3.         {
  4.             StreamReader sr = File.OpenText("videos.txt");
  5.             if (sr != null)
  6.             {
  7.                 while (!sr.EndOfStream)
  8.                 {
  9.                     string linea = sr.ReadLine();
  10.                     Console.WriteLine(linea);
  11.                 }
  12.             }
  13.             sr.Close();
  14.  
  15.             StreamWriter sw = File.AppendText("videos.txt");
  16.             sw.WriteLine("Hola Mundo");
  17.             sw.Close();
  18.             Console.ReadKey(true);
  19.         }
  20.  
  21.  
Título: Re: Liberar Un Fichero De Texto.
Publicado por: Lockter en Jueves 17 de Abril de 2008, 09:06
El codigo funciona, pero ahora ocurre que empieza a escribir al final del texto.
Hay alguna forma de que sobreescriba el texto desde el principio?

Gracias.
Título: Re: Liberar Un Fichero De Texto.
Publicado por: ProfesorX en Jueves 17 de Abril de 2008, 19:07
Podrias utilizar System.IO.File.CreateText(), pero eso te borra todo el archivo, asi que pienso que la solucion seria usar dos archivos, uno lo lees, y luego pasas el contenido que necesites de ese al segundo archivo, despues cerrarias el primero, lo borras, y al segundo le pones el nombre del primer archivo.