• Domingo 22 de Diciembre de 2024, 15:03

Autor Tema:  Eliminar Dato Archivo De Texto  (Leído 7437 veces)

EdyRomanito

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Eliminar Dato Archivo De Texto
« en: Miércoles 22 de Agosto de 2007, 21:18 »
0
Hola me gustaria saber una forma de eliminar un dato de un Archivo de Texto.

kaidok

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: Eliminar Dato Archivo De Texto
« Respuesta #1 en: Jueves 23 de Agosto de 2007, 23:52 »
0
Pues puedes leer con un StreamReader el contenido que te interese para copiarlo a otro archivo. Es que creo que editar uno directamente sobre un archivo de texto no se puede  :unsure: .

JaviMarciano

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Eliminar Dato Archivo De Texto
« Respuesta #2 en: Viernes 24 de Agosto de 2007, 00:53 »
0
Hola viejo!

Todo depende de la manera en que guardas los datos
yo guardo una cadena por linea, por ejemplo Un Nombre.

mirá: la metodología es la siguiente (una de ellas) tenes que abrir el archivo para lectura,  crear un archivo auxiliar y abrirlo para escritura, vas recorriendo el Arhivo principal mientras vas comparando con la cadena que queres eliminar, en caso negativo copias lo que lees del archivo principal al auxiliar, cuando sea afirmativa la comparación no la copias, entonces al terminar de recorrer el archivo, tenes en el auxiliar todas las cadenas menos la que querías eliminar. Después borras el contenido del Arhivo principal (una forma de hacerlo es abriendolo en FileMode.Truncate) después pasas el contenido del archivo Auxiliar al Principal!!
y listo ya te quedaron todas las cadenas menos la que querías eliminar!!

pero como te dije hay otras formas: por ejemplo siguiendo el caso de tener guardados nombres, uno por linea, los podes volcar en un ListBox. Lo Borras de ahí con
Citar
listBox1.Items.Remove();
y borras todo el contenido del archivo, luego pasas las cadenas que te quedaron en el listBox, luego de haber eliminado la que quieras, al Archivo, y también de esta forma te quedan todas las cadenas menos la que querías eliminar!

ahí te dejo un ejemplo del código que uso para eliminar un Apellido del Archivo Personal. En el mismo tengo Guardado el Apellido en una Linea y El Nombre en la siguiente

Citar
  string CadenaComp;
            FileStream str = new FileStream("Personal.txt", FileMode.OpenOrCreate, FileAccess.Read);
            StreamReader rd = new StreamReader(str);

            FileStream strwraux = new FileStream("auxiliar.txt", FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter wraux = new StreamWriter(strwraux);

            while (rd.Peek() > -1)
            {
                CadenaComp = rd.ReadLine(); ;
                string apel = rd.ReadLine();
                if (CadenaComp != textBox2.Text.ToUpper())
                {
                    wraux.WriteLine(CadenaComp);
                    wraux.WriteLine(apel);
                }
                else if (apel != textBox1.Text.ToUpper())
                {
                    wraux.WriteLine(CadenaComp);
                    wraux.WriteLine(apel);
                }
                else
                    MessageBox.Show("Fue Eliminado:  " + textBox1.Text + ",  " + textBox2.Text, "Eliminado", MessageBoxButtons.YesNoCancel);
            }

            rd.Close();
            wraux.Close();

            FileStream strborrarpr = new FileStream("Personal.txt", FileMode.Truncate, FileAccess.Write);
            StreamWriter borrapr = new StreamWriter(strborrarpr);
            borrapr.Close();

            FileStream strleer = new FileStream("auxiliar.txt", FileMode.OpenOrCreate, FileAccess.Read);
            StreamReader leer = new StreamReader(strleer);

            FileStream str1 = new FileStream("Personal.txt", FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter wrpr = new StreamWriter(str1);

            while (leer.Peek() > -1)
            {
                wrpr.WriteLine(leer.ReadLine());
            }

            leer.Close();
            wrpr.Close();

            FileStream deleteaux = new FileStream("auxiliar.txt", FileMode.Truncate, FileAccess.Write);
            StreamWriter delaux = new StreamWriter(deleteaux);
            delaux.Close();
            textBox2.Text = "";
            textBox1.Text = "";

       

En caso contrario, puedo guardar en la misma linea El Apellido, el Nombre, etc.
Pero de esta manera, tendría que asignarle un número considerado de caracteres a cada dato y después leer la linea y discriminar los caracteres con funciones de cadena, o tb se puede leer caracter por caracter directamente del archivo, o eso creo, en otro lenguaje por lo menos lo hago así!

espero que te quede claro y te sea de ayuda!!!