Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/03/2005, 11:29
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Eliminar una linea de un archivo de texto

Hola. Para leer un archivo de texto utilizo un StreamReader con la codificación System.Text.Encoding.Default. Esta es la única manera en la que me funcionaban ciertas operaciones que hacía al leerlo línea por línea, ya que el archivo se generaba en un sistema Linux.

El caso es que lo que quiero es, en otro caso, eliminar una sóla línea del archivo. He intentado ir leyendo linea por linea y meterlas en una cadena de texto salvo la que quería eliminar. Luego esa cadena la escribía en un StreamWriter.

Código:
        Dim nombre As String = idArchivo & ".txt"
        Dim ruta As String = rutaArchivos & "\" & nombre
        Dim objSR As StreamReader
        Dim texto As String
        Dim linea As String

        Try
            objSR = New StreamReader(ruta, System.Text.Encoding.Default)
        Catch ex As FileLoadException
            Throw New Exception("No se ha podido cargar el archivo " & ruta)
        Catch ex As FileNotFoundException
            Throw New Exception("No se ha podido encontrar el archivo " & ruta)
        Catch ex As Exception
            Throw New Exception("Error desconocido en " & ruta)
        End Try

        linea = objSR.ReadLine

        Do Until linea = ""
            If linea.IndexOf("cadena_a_buscar", 12, 12) <> 12 Then
                texto += linea & vbNewLine
            End If
            linea = objSR.ReadLine
        Loop
        objSR.Close()

        Dim objSW As New StreamWriter(ruta, False, System.Text.UTF7Encoding.UTF7)
        objSW.Write(texto)
El archivo resultante queda sin la línea en la que estaba la cadena_a_buscar pero algo distinto, porque al volver a abrirlo las longitudes de cada línea (que deberían ser fijas) cambian y no funcionan ciertas operaciones que se hacían con cada una.

¿Dónde está el problema?¿En vbNewLine?¿O en el sistema de codificación?

Muchas gracias.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!