Visual Basic.NET - Problemas para escribir en archivo

 
Vista:
Imágen de perfil de jose
Val: 42
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problemas para escribir en archivo

Publicado por jose (33 intervenciones) el 15/02/2018 08:59:58
Hola,

Necesito ayuda con un pequeño código. Hace años que no programo y se me ocurrio ponerlo en práctica con una pequeña necesidad que tenemos en mi empresa.

Quisiera crear que el programa cree un archivo por variables.


1
2
3
4
5
6
7
8
9
Public Class frmWeb
 
    Dim ipvar As String
 
    ':::Ruta donde crearemos nuestro archivo txt
    Dim DirStrPath As String = "C:\Tutoriales\"
    ':::Nombre del archivo
    Dim FileStrPath As String = "Prueba.txt"
    Dim StrPath As String = DirStrPath & FileStrPath

En el form_load la aplicación comprueba que si no existe el directorio lo crea, lo lee hasta el final y añade lo leído a un valor que pinta en un label, y lo utiliza un webbrowser.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Try
 
    If Not File.Exists(FileStrPath) Then
 
        ' Try to create the directory.
        Dim di As DirectoryInfo = Directory.CreateDirectory(DirStrPath)
 
        ':::Si la carpeta existe creamos o sobreescribios el archivo txt
        fs = File.Create(FileStrPath)
        fs.Close()
        MsgBox("Archivo creado correctamente" & vbNewLine & "Añadir nueva dirección del dispensador principal", MsgBoxStyle.Information, "")
 
    Else
 
        Try
 
            ':::Creamos nuestro objeto de tipo StreamReader que nos permite leer archivos
            Dim leer As New StreamReader(StrPath)
            leer.Close()
 
            ' Apuntador libre a archivo 
            Dim Apunt As Integer = FreeFile()
            ' Variable donde guardamos cada línea de texto 
            Dim Texto As String
 
            ' Abrimos el archivo y lo recorremos hasta el final línea por línea 
            FileOpen(Apunt, StrPath, OpenMode.Input, OpenAccess.Read)
            Do While Not EOF(Apunt)
                ' Leemos la línea de texto del archivo 
                Texto = LineInput(Apunt)
                ':::Agregramos los registros encontrados
                TxtIP.Text = "La dirección actual del dispensador es: " + Texto
                ipvar = Texto
                WebBrowser1.Refresh()
                WebBrowser1.Navigate("http://" + ipvar + "terminal/terminal.html")
            Loop
            ' Cerramos el archivo 
            FileClose(Apunt)
 
        Catch ex As Exception
            MsgBox("Se presento un problema al leer el archivo: " & ex.Message, MsgBoxStyle.Critical, "Qmatic Terminal")
        End Try
 
    End If
 
Catch ex As Exception
    MsgBox("Se presento un problema al momento de crear el archivo: " & ex.Message, MsgBoxStyle.Critical, "")
End Try


En esta otra parte del código escribimos la nueva dirección, añadiendo al archivo del texto y volviendolo a leer.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Private Sub TxtIpChange_KeyDown(sender As Object, e As KeyEventArgs) Handles TxtIpChange.KeyDown
    If e.KeyCode = Keys.Enter Then
 
        Dim escribir As New StreamWriter(StrPath)
 
 
        Try
            ':::Creamos nuestro objeto de tipo StreamReader que nos permite leer archivos
            Dim leer As New StreamReader(StrPath)
            leer.Close()
 
            ':::Escribimos una linea en nuestro archivo TXT con el formato que este separado por coma (,)
            escribir.WriteLine(TxtIpChange.Text)
            MsgBox("Registro guardado correctamente", MsgBoxStyle.Information, "")
            ':::Limpiamos los TextBox
            TxtIpChange.Clear()
            'TxtIP.Text = TxtIpChange.Text
 
 
            escribir.Close()
            ':::Llamamos nuestro procedimiento para leer el archivo TXT
            ' Apuntador libre a archivo 
            Dim Apunt As Integer = FreeFile()
            '' Variable donde guardamos cada línea de texto 
            Dim Texto As String
 
            ' Abrimos el archivo y lo recorremos hasta el final línea por línea 
            FileOpen(Apunt, StrPath, OpenMode.Input, OpenAccess.Read)
            Do While Not EOF(Apunt)
                ' Leemos la línea de texto del archivo 
                Texto = LineInput(Apunt)
                ':::Agregramos los registros encontrados
                TxtIP.Text = "La dirección actual del dispensador es: " + Texto
                ipvar = Texto
                WebBrowser1.Refresh()
                WebBrowser1.Navigate("http://" + ipvar + "terminal/terminal.html")
            Loop
            ' Cerramos el archivo 
            FileClose(Apunt)
            TxtIpChange.Visible = False
 
        Catch ex As Exception
            MsgBox("Se presento un problema al escribir en el archivo: " & ex.Message, MsgBoxStyle.Critical, "")
        End Try
 
    End If
End Sub


Error: Todo bién execpto, a la hora de darle al textbox para que me escriba el nuevo texto en el texto me dice: "El proceso no puede obtener acceso al archivo porque está siendo utilizado en otro proceso."

Alguna idea de como solucionar esto.

Muchas gracias,
Jose Luis.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problemas para escribir en archivo

Publicado por giancarlo (488 intervenciones) el 15/02/2018 20:17:05
para que puedas escribir texto, usa streamwriter

1
2
3
4
5
6
7
8
Dim lines() As String = {"First line", "Second line", "Third line"}
 
Dim mydocpath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Using outputFile As New io.StreamWriter(mydocpath & Convert.ToString("\WriteLines.txt"))
    For Each line As String In lines
        outputFile.WriteLine(line)
    Next
End Using
para leer usa srteamreader
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jose
Val: 42
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problemas para escribir en archivo

Publicado por jose (33 intervenciones) el 17/02/2018 12:41:16
Muchas gracias Giancarlo,

Lo había solucionado eliminado un .close. .Pero me quedo el codigo para el futuro muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar