none
Error al carga un txt :(

    Pregunta

  • Como dice el titulo tengo un error al querer cargar un txt alguien me puede ayudar?

    Imports System.IO
    
    Public Class Form1
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
            Dim oSW As New StreamWriter("D:\12.txt")
            Dim i As Integer
            For i = 0 To ListBox1.Items.Count - 1
                Dim Linea = ListBox1.Items(i).ToString()  
                oSW.WriteLine(Linea)
                oSW.Flush()
    
            Next
    
    
            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''CARGAR TXT
            Dim Archivo As System.IO.FileInfo = New FileInfo("D:\12.txt")
            Me.ListBox2.Items.Clear()
            Try
                Dim abrir As StreamReader = Archivo.OpenText
                Dim linea As String
                Do While abrir.Peek() > 0
                    linea = abrir.ReadLine()
                    Me.ListBox1.Items.Add(linea)
                Loop
                abrir.Close()
            Catch ex As SystemException
                MsgBox(ex.Message, MsgBoxStyle.OkOnly, "ERROR")
            End Try
            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        End Sub
    End Class

    domingo, 25 de septiembre de 2016 1:04

Respuestas

  • Hola Cael1020,

    Aquí te muestro el código que deberías usar :

    - Creo un archivo con los items del ListBox1, donde cada item representará una línea.

    - Leo el archivo creado y cargo el ListBox2.

      Private Sub btnCreateAndReadFile_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            Dim ruta As String = "D:\12.txt"
    
            Try
                'Almaceno los items del ListBox1 en un array, donde
                'cada item representará una línea
                Dim items As String() = ListBox1.Items.OfType(Of String).ToArray
                File.WriteAllLines(ruta, items) 'Creo el archivo
    
                'Leo el archivo y guardo
                'cada linea como un item al LB2
                For Each linea In File.ReadAllLines(ruta)
                    Me.ListBox2.Items.Add(linea)
                Next
    
                MessageBox.Show("Success")
    
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Exception",
                               MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    domingo, 25 de septiembre de 2016 2:54

Todas las respuestas

  • Hola Cael1020

    Puedes probar así:

            
            Dim leer As StreamReader
           
            leer = New StreamReader(Ruta_de_Archivo)
            Dim nLineas As Integer = File.ReadAllLines(Ruta_de_Archivo).Length
        
                Dim c As Integer = 1
                'Leer linea a linea hasta el final
                While c <= nLineas And Not leer.EndOfStream
                    Dim linea As String = leer.ReadLine
    
                    Me.Lista.Items.Add(linea)
                End While

    Podrías indicar tu error?

     

    Javier

    domingo, 25 de septiembre de 2016 1:20
  • Es este error, los códigos por separado si sirven :)

    El proceso no puede obtener acceso al archivo 'E:\12.txt' por que esta siendo utilizado en otro proceso.

    aparece eso en una ventana :(


    • Editado Cael1020 domingo, 25 de septiembre de 2016 1:36
    domingo, 25 de septiembre de 2016 1:35
  • Hola Cael1020,

    ¿Cuál es el error que obtienes?

    Para crear un archivo con los items del ListBox puedes hacer :

            Dim ruta As String = "D:\12.txt"
    
            For Each linea In File.ReadAllLines(ruta)
                Me.ListBox1.Items.Add(linea)
            Next
    

    Y para guardarlo :

            Dim ruta As String = "D:\12.txt"
    
            Dim items As String() = ListBox2.Items.OfType(Of String).ToArray
            File.WriteAllLines(ruta, items)

    Además deberías usar el using para liberar el objeto..

            Using oSW As New StreamWriter("D:\12.txt")
                'Resto de código ...
            End Using

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    domingo, 25 de septiembre de 2016 1:39
  • Quizás tienes abierto el archivo o proceso, deberías ejecutar sólo tu código de abajo, xq parece que ocupas el archivo con el primer código.


    Javier

    domingo, 25 de septiembre de 2016 1:44
  • solo busco cual es el código para cerrar el archivo txt que se ocupa para volverlo a cargarlo en otro Listbox novato en apuros
    domingo, 25 de septiembre de 2016 1:48
  • solo busco cual es el código para cerrar el archivo txt que se ocupa para volverlo a cargarlo en otro Listbox novato en apuros

    Hola Cael1020,

    Como te mencioné anteriormente, debes usar using para no tener ese problema.

            Using oSW As New StreamWriter("D:\12.txt")
                For i = 0 To ListBox1.Items.Count - 1
                    Dim Linea = ListBox1.Items(i).ToString()
                    oSW.WriteLine(Linea)
                    oSW.Flush()
                Next
            End Using
    
          'Demás .....

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    domingo, 25 de septiembre de 2016 1:53
  • Lo que pretendo hacer es lo siguiente ya tengo un listbox con los datos, deseo al ejecutar lo datos de listbox1 que escribí de forma manual.

    1 se guarden en un txt

    2 desde luego aqui es donde tengo el problema de cerrar el txt para volver abrirlo

    3 cargar los datos que se guardaron en el txt  cargalos en un listbox2

    no entiendo mucho los códigos.

    Imports System.IO
    
    Public Class Form1
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    
            Dim ruta As String = "D:\12.txt"
    
            Dim items As String() = ListBox1.Items.OfType(Of String).ToArray()
            File.WriteAllLines(ruta, items)
    
    
    
    
            Using oSW As New StreamWriter("D:\12.txt")
                For i = 0 To ListBox1.Items.Count - 1
                    Dim Linea = ListBox1.Items(i).ToString()
                    oSW.WriteLine(Linea)
                    oSW.Flush()
                Next
            End Using
    
    
    
            Dim ruta As String = "D:\12.txt"
    
            For Each linea In File.ReadAllLines(ruta)
                Me.ListBox1.Items.Add(linea)
            Next
        
        End Sub
    End Class


    • Editado Cael1020 domingo, 25 de septiembre de 2016 2:38
    domingo, 25 de septiembre de 2016 2:37
  • Hola Cael1020,

    Aquí te muestro el código que deberías usar :

    - Creo un archivo con los items del ListBox1, donde cada item representará una línea.

    - Leo el archivo creado y cargo el ListBox2.

      Private Sub btnCreateAndReadFile_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            Dim ruta As String = "D:\12.txt"
    
            Try
                'Almaceno los items del ListBox1 en un array, donde
                'cada item representará una línea
                Dim items As String() = ListBox1.Items.OfType(Of String).ToArray
                File.WriteAllLines(ruta, items) 'Creo el archivo
    
                'Leo el archivo y guardo
                'cada linea como un item al LB2
                For Each linea In File.ReadAllLines(ruta)
                    Me.ListBox2.Items.Add(linea)
                Next
    
                MessageBox.Show("Success")
    
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Exception",
                               MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    domingo, 25 de septiembre de 2016 2:54
  • Como te digo por separado si funcionan en un boton, pero no puedo conseguir primero guardar, cerrar, abrir, leer que sea automático todo al iniciar el programa, no deseo la intervención de botones, deseo que sea automático al iniciar el programa, ya intente tu ayuda pero por lo que veo es para leer y guardar, yo deseo que sea al revés,  guardar y después leer, saludos y gracias por la ayuda :) .
    domingo, 25 de septiembre de 2016 4:23