miércoles, 7 de septiembre de 2016

Leer, escribir y vaciar archivo de texto Vb.net


Vamos a usar un ejemplo con 3 cajas de texto. Simulando un número de factura, que al dar click en aumentar se incrementará en 1 el  número de la tercer caja de texto.




 
Hay funciones para verificar si la carpeta y archivo de texto existen, para crearlos en caso de que no, para borrar el contenido del archivo y volver a escribir, cabe recalcar que se trabajará con la primer linea del archivo.
Dudas o preguntas, comenten =) 

A continuación, el código.


 Private Sub btn_guardar_Click(sender As Object, e As EventArgs) Handles btn_guardar.Click
        If (Me.txt_serie1.Text = "" Or Me.txt_serie2.Text = "" Or Me.txt_numero_serie.Text = "") Then
            MsgBox("Faltan algunos campos")
        Else
            If verifica_existe_carpeta() Then
                If verifica_existe_archivo() Then
                    '   MsgBox("Archivo existe")
                    borra_info_fac()
                    escribir_numero_de_factura(Me.txt_serie1.Text, Me.txt_serie2.Text, Me.txt_numero_serie.Text)
                Else
                    '   MsgBox("Archivo no existe")
                    crear_archivo()
                    escribir_numero_de_factura(Me.txt_serie1.Text, Me.txt_serie2.Text, Me.txt_numero_serie.Text)
                End If
            Else
                ' MsgBox("Carpeta no existe")
                crear_carpeta()
                crear_archivo()
                escribir_numero_de_factura(Me.txt_serie1.Text, Me.txt_serie2.Text, Me.txt_numero_serie.Text)
            End If
            cargar_numero_fac()
        End If
    End Sub
    Private Function verifica_existe_carpeta() As Boolean 'verifica si existe el archivo
        Dim resp As Boolean = False
        Dim ruta As String = "C:\iconos"
        If Directory.Exists(ruta) = True Then
            resp = True
        End If
        Return resp
    End Function
    Private Function verifica_existe_archivo() As Boolean 'verifica si existe el archivo
        Dim resp As Boolean = False
        Dim ruta As String = "C:\iconos\num_serie.txt"
        If File.Exists(ruta) = True Then
            resp = True
        End If
        Return resp
    End Function
    Private Sub cargar_numero_fac() 'carga el numero de la factura
        If verifica_existe_carpeta() And verifica_existe_archivo() Then
            Dim objStreamReader As StreamReader
            Dim strLine As String
            objStreamReader = New StreamReader("C:\iconos\num_serie.txt")
            'extraemos la primer linea de texto
            strLine = objStreamReader.ReadLine
            objStreamReader.Close()
            If strLine = "" Then
                Me.txt_serie1.Text = "000"
                Me.txt_serie2.Text = "000"
                Me.txt_numero_serie.Text = "000000000"
            Else
                Dim Arreglo As String() = strLine.Split("-")
                Me.txt_serie1.Text = Arreglo(0)
                Me.txt_serie2.Text = Arreglo(1)
                Me.txt_numero_serie.Text = Arreglo(2)
            End If
        Else
            ' MsgBox("Carpeta y/o archivo no existe")
            Me.txt_serie1.Text = "000"
            Me.txt_serie2.Text = "000"
            Me.txt_numero_serie.Text = "000000000"
        End If
    End Sub
    Private Sub crear_carpeta()
        Dim ruta As String = "C:\"
        My.Computer.FileSystem.CreateDirectory(ruta & "\iconos")
    End Sub
    Private Sub crear_archivo()
        Dim ruta As String = "C:\iconos\num_serie.txt"
        Dim fi As FileInfo = New FileInfo(ruta)
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        cargar_numero_fac()
    End Sub
    Private Sub escribir_numero_de_factura(ByVal serie1 As String, ByVal serie2 As String, ByVal num_serie As String)
        Dim ruta As String = "C:\iconos\num_serie.txt"
        Dim sw As StreamWriter
           sw = File.CreateText(ruta)
        sw.WriteLine(serie1 & "-" & serie2 & "-" & num_serie)
        sw.Flush()
        sw.Close()
    End Sub
    Private Sub borra_info_fac()
        Using file As New IO.StreamWriter("C:\iconos\num_serie.txt")
            file.Flush()
        End Using
    End Sub
    Private Sub incrementa_num_fac()
        ' extraemos contenido
        Dim objStreamReader As StreamReader
        Dim strLine As String
        objStreamReader = New StreamReader("C:\iconos\num_serie.txt")
        'Leemos la primer linea de texto
        strLine = objStreamReader.ReadLine
        'cerramos el archivo.
        objStreamReader.Close()
        Dim Arreglo As String() = strLine.Split("-")' separamos la cadena 
        Dim s1 As String = Arreglo(0)
        Dim s2 As String = Arreglo(1)
        Dim s3 As String = CStr(CInt(Arreglo(2)) + 1)'sumamos en 1
        '-------------borramos contenido
        borra_info_fac()
        '---------------actualiza
        escribir_numero_de_factura(s1, s2, s3)
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        incrementa_num_fac()
        cargar_numero_fac()
    End Sub


No hay comentarios:

Publicar un comentario