none
Releer un archivo RRS feed

  • Pregunta

  • Hola a todos,

    Tengo un problema intentando leer un archivo, explico el contexto: Inicialmente tengo esta función, está no presenta problemas:

     Private Sub Prinicpal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            Timer1.Enabled = True
            Dim fecha As Date
            Dim path As String = Directory.GetCurrentDirectory()
            LeerFicheroDesdeLinea(path + "\archivos\Eventos.txt")
            Dim horaIni = DateTime.Now.ToLongTimeString()

            fecha = Now
            ValidarEventoActivo(Weekday(fecha))  
        End Sub 

    Pero posteriormente necesito por decirlo así refrescar la lectura ya que agrego otra linea al archivo y necesito que se cargue al programa. Intente copiando la misma función que tengo el load "el que copie en la parte superior" pero tengo inconvenientes. Agrego las funciones con las que leo la linea del archivo, para ver si de pronto tengo algo malo, si hay otra forma me gustaría saberla.

    Sub LeerFicheroDesdeLinea(ByVal nombreFichero As String)

            Dim Linea As String = ""
            Dim Fila As Integer = 0
            Dim sr As StreamReader = New StreamReader(nombreFichero)

            Do While sr.Peek() >= 0
                AgregarpalabraTabla(sr.ReadLine(), Fila)
                Fila = Fila + 1
            Loop
            sr.Close()

        End Sub

        Sub AgregarpalabraTabla(ByVal palabra As String, ByVal fila As Integer)

            Dim delimiter As Char = vbTab
            Dim arregloPalabras() As String = palabra.Split(delimiter)
            Prinicpal.Programación_evento.Rows.Add()

            For index = 0 To 8
                If (String.IsNullOrEmpty(palabra)) Then
                    Prinicpal.Show()
                Else
                    Prinicpal.Programación_evento.Item(index, fila).Value = arregloPalabras(index)
                    lectura(index, fila) = arregloPalabras(index)  'utilizado para almacenar informacion en matriz y posterior validacion
                End If
            Next

        End Sub

    Muchas gracias.

    lunes, 10 de abril de 2017 23:48

Respuestas

  • Detrás del sr.Close() que cierra el StreamReader, agrega una llamada a sr.Dispose(). A veces el Close no es suficiente para "liberar" el archivo, que queda bloqueado y no permite volverlo a leer. El Dispose debería terminar de liberarlo.
    • Marcado como respuesta John Vanegas martes, 11 de abril de 2017 20:41
    martes, 11 de abril de 2017 6:39
  • hola

    si la idea es lerr todas ls lineas no tienes que hacerlo de a una, podrias utilizar

    Sub LeerFicheroDesdeLinea(ByVal nombreFichero As String)
    
    	Dim Fila As Integer = 0
    	Dim Lineas() As String = File.ReadAllLines(nombreFichero)
    
    	For Each Linea As String In Lineas
    		AgregarpalabraTabla(Linea, Fila)
    		Fila = Fila + 1
    	Next
    
    End Sub

    de esta forma cargas las lineas y puedes iterar en un foreach


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta John Vanegas martes, 11 de abril de 2017 20:41
    martes, 11 de abril de 2017 11:07

Todas las respuestas

  • Detrás del sr.Close() que cierra el StreamReader, agrega una llamada a sr.Dispose(). A veces el Close no es suficiente para "liberar" el archivo, que queda bloqueado y no permite volverlo a leer. El Dispose debería terminar de liberarlo.
    • Marcado como respuesta John Vanegas martes, 11 de abril de 2017 20:41
    martes, 11 de abril de 2017 6:39
  • hola

    si la idea es lerr todas ls lineas no tienes que hacerlo de a una, podrias utilizar

    Sub LeerFicheroDesdeLinea(ByVal nombreFichero As String)
    
    	Dim Fila As Integer = 0
    	Dim Lineas() As String = File.ReadAllLines(nombreFichero)
    
    	For Each Linea As String In Lineas
    		AgregarpalabraTabla(Linea, Fila)
    		Fila = Fila + 1
    	Next
    
    End Sub

    de esta forma cargas las lineas y puedes iterar en un foreach


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta John Vanegas martes, 11 de abril de 2017 20:41
    martes, 11 de abril de 2017 11:07
  • Muchas Gracias, me resolviste el problema.

    martes, 11 de abril de 2017 20:41
  • Gracias por su ayuda, voy a verificar si me sirve lo que me dijiste para lo que necesito.
    martes, 11 de abril de 2017 20:43