Fecha y hora actual: Jueves 17 Ene 2019 04:31
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Curso VB .NET - Tema 1.38 - Archivos, VB 2005

Responder al Tema

Índice del Foro > Visual Basic .NET > Curso VB .NET - Tema 1.38 - Archivos, VB 2005

Autor Mensaje
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 3200
Ubicación: Valencia - España

Mensaje Publicado: Sábado 31 Oct 2009 19:40

Título del mensaje: Curso VB .NET - Tema 1.38 - Archivos, VB 2005

Responder citando

Curso de programación en .NET - Tema 1.38 - Archivos, Visual Basic 2005


1. Archivos VB.
1.1 Objetivos del tema.

Ver el acceso a un archivo en VB 2005.

1.2 Introducción.
En todos los lenguajes de programación el orden de ejecución del acceso a un archivo es el mismo.
Los requisitos serán conocer:

    El nombre del archivo
    Su ubicación en nuestro sistema
    La estructura del mismo.

A continuación necesitaremos conocer las distintas instrucciones disponibles en nuestro lenguaje para acceder al archivo en cuestión.

1.3 Abrir, acceder al archivo.
En la apertura de un archivo se pueden dar varias situaciones.
    Queremos grabar un nuevo archivo.
    Queremos grabar un archivo y ya existe.
    Queremos leer un archivo y éste puede existir o no.

En cualquier caso necesitaremos siempre un
    Nombre del archivo
    Ubicación del archivo.

La sintaxis de abrir un archivo para salida, grabación o escritura, es la siguiente.
Código:
Module Ejemplo
   Sub main()
      Dim Canal As Int16 = FreeFile()
      Dim Nombre As String = "Pruebas.Txt"
      FileOpen(Canal, Nombre, OpenMode.Output)
      ' Cierre del Archivo
      FileClose(Canal)
   End Sub
End Module


La explicación.
Código:
Dim Canal As Int16 = FreeFile()


Creamos la referencia del Archivo, asignándole un valor numérico que es la referencia en el programa para identificar el archivo una vez abierto.
Código:
Dim Nombre As String = "Pruebas.Txt"


Creamos una variable de tipo string que tendrá el nombre, y que también podrá tener la dirección del archivo.
Código:
FileOpen(Canal, Nombre, OpenMode.Output)


De ésta forma se crea un archivo vacío en la ruta por defecto del proyecto en curso, el archivo se abre para realizar una grabación, salida.
Hay que tener presente que cuando inicializamos la variable “Nombre” con el dato del nombre del archivo simultáneamente hay que indicar la dirección del archivo.
El siguiente paso es poder grabar datos en el mismo.

1.4 Grabar.
Si deseamos añadir datos al archivo utilizaremos el método writeline en el canal que hemos establecido anteriormente.
Código:
Module Ejemplo
   Sub main()
      Dim Canal As Int16 = FreeFile()
      Dim Nombre As String = "Prueba.Txt"
      Dim Valor As String
      Dim Meses() As String = {"Enero", "Febrero", "Marzo", _
      "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", _
      "Octubre", "Noviembre", "Diciembre"}

      Console.WriteLine("Probamos grabar un archivo secuencial ")
      FileOpen(Canal, Nombre, OpenMode.Output)
      For Each Valor In Meses
         WriteLine(Canal, Valor) ‘ con marca fin de registro
         ‘ sin marca Write a solas
         Console.WriteLine("Grabado {0} ", Valor)
      Next
      ' Cierre del Archivo
      FileClose(Canal)
   End Sub
End Module


Otra cosa es que en función de nuestros conocimientos, esto nos parezca o no bien, o adecuado, pero ésta es la sintaxis para grabar datos, registros.
Por lo tanto para grabar una estructura de datos que en el mundillo de la gestión es lo necesario hay que implementar alguna herramienta, que luego veremos, desarrollaremos una clase.

1.5 Leer.
La lectura no es más complicada, claro, partiendo del supuesto de lo que se puede grabar, no puede ser mucho más compleja.
Código:
Module Ejemplo
  Sub main()
     Dim Canal As Int16 = FreeFile()
     Dim Nombre As String = "Prueba.Txt"
     Console.WriteLine()
     Console.WriteLine("Probamos a leer un archivo secuencial ")
     FileOpen(Canal, Nombre, OpenMode.Input)
   
    Do While Not EOF(Canal)
        Input(Canal, Valor)
        Console.WriteLine("Leído {0} ", Valor)
      Loop
     ' Cierre del Archivo
     FileClose(Canal)
  End Sub
End Module


Código:
Dim Canal As Int16 = FreeFile()
Dim Nombre As String = "Prueba.Txt"


Utilizamos las mismas instrucciones que antes, pero para la lectura abrimos el archivo en modo lectura, entrada.
Código:
FileOpen(Canal, Nombre, OpenMode.Input)


Solo nos queda establecer una estructura repetitiva
Código:
Console.WriteLine("Probamos a leer un archivo secuencial ")
Do While Not EOF(Canal)
   Input(Canal, Valor)
   Console.WriteLine("Leído {0} ", Valor)
Loop


Se ejecuta el While mientras haya datos en el archivo.
Para que todo funcione correctamente, a las clases importadas anteriormente hay que sumar ahora.
Además para que todo lo visto, tanto en lectura como en escritura, funcione adecuadamente conviene establecer una captura de errores, por lo que todo lo expuesto debería ir entre
Código:
try
   ‘ todo el ejemplo visto anteriormente
catch Ex as Io.Ioexception
   Console.WriteLine("Error en acceso al archivo")
End try


Como se puede apreciar al inicio del ejemplo.

1.6 Cerrar.
Cerrar el archivo solo precisa de la utilización del método close.
Código:
FileClose(Canal)


1.7 Matices.
Mientras la instrucción de grabar
Código:
WriteLine(Canal, Valor) ‘ con marca fin de registro


Permite que en la misma línea de código se graben varios campos
Código:
WriteLine(Canal, Codigo, Denominación, Cantidad)


Su equivalente en lectura no lo permite ya que solo admite un campo en cada instrucción, por lo tanto la lectura para
Código:
WriteLine(Canal, Codigo, Denominación, Cantidad)


sería
Código:
Input(Canal, Codigo)
Input(Canal, Denominacion)
Input(Canal, Cantidad)


Una línea para cada campo.

1.8 Ejercicios propuestos.
  1. Crear un archivo de texto con una frase cualquiera.
  2. Acceder al archivo anterior y visualizar la frase que se ha grabado.
  3. Crear un archivo y copiar el contenido del archivo anterior.
  4. Acceder al nuevo archivo y visualizar su contenido.


1.9 Solución a los ejercicios propuestos.
1.-Crear un archivo de texto con una frase cualquiera.
Código:
Module Tema_38
  Private Sub AbreArchivo(ByVal Nombre As String, ByRef Canal As Integer)
     Canal = FreeFile()
     Dim Archivo As String = My.Application.Info.DirectoryPath & "\" & Nombre
     FileOpen(Canal, Archivo, OpenMode.Output)
  End Sub
  Private Sub GrabarFrase(ByVal Canal As Integer, ByVal Frase As String)
     WriteLine(Canal, Frase)
  End Sub
 
  Sub Main()
    Dim Canal As Integer
    Dim Texto As String
    AbreArchivo("Texto.txt", Canal)
    Texto = Console.ReadLine
    GrabarFrase(Canal, Texto)
    FileClose(Canal)
  End Sub
End Module


2.-Acceder al archivo anterior y visualizar la frase que se ha grabado.
Código:
Module Tema_38
  Private Sub AbreArchivo(ByVal Nombre As String, ByRef Canal As Integer)
     Canal = FreeFile()
     Dim Archivo As String = My.Application.Info.DirectoryPath & "\" & Nombre
     FileOpen(Canal, Archivo, OpenMode.Input)
  End Sub
  Private Function LeerFrase(ByVal Canal As Integer) As String
     Dim Frase As String
     Input(Canal, Frase)
     Return Frase
  End Function
 
  Sub Main()
     Dim Canal As Integer
     Dim Texto As String
     AbreArchivo("Texto.txt", Canal)
     Console.WriteLine(LeerFrase(Canal))
     FileClose(Canal)
     Console.ReadLine()
  End Sub
End Module


3.-Crear un archivo y copiar el contenido del archivo anterior.
Código:
Module Tema_38
  Private Sub AbreArchivoNuevo(ByVal Nombre As String, ByRef Canal As Integer)
     Canal = FreeFile()
     Dim Archivo As String = My.Application.Info.DirectoryPath & "\" & Nombre
     FileOpen(Canal, Archivo, OpenMode.Output)
  End Sub
  Private Sub AbreArchivo(ByVal Nombre As String, ByRef Canal As Integer)
     Canal = FreeFile()
     Dim Archivo As String = My.Application.Info.DirectoryPath & "\" & Nombre
     FileOpen(Canal, Archivo, OpenMode.Input)
  End Sub
  Private Sub GrabarFrase(ByVal Canal As Integer, ByVal Frase As String)
     WriteLine(Canal, Frase)
  End Sub
  Private Function LeerFrase(ByVal Canal As Integer) As String
     Dim Frase As String
     Input(Canal, Frase)
     Return Frase
  End Function
 
  Sub Main()
     Dim Canal As Integer
     Dim CanalNuevo As Integer
     Dim Texto As String
     AbreArchivo("Texto.txt", Canal)
     AbreArchivoNuevo("Nuevo.txt", CanalNuevo)
     GrabarFrase(CanalNuevo, LeerFrase(Canal))
     FileClose(Canal)
     FileClose(CanalNuevo)
     Console.ReadLine()
  End Sub
End Module


4.-Acceder al nuevo archivo y visualizar su contenido.
Código:
Module Tema_38
  Private Sub AbreArchivo(ByVal Nombre As String, ByRef Canal As Integer)
     Canal = FreeFile()
     Dim Archivo As String = My.Application.Info.DirectoryPath & "\" & Nombre
     FileOpen(Canal, Archivo, OpenMode.Input)
  End Sub
  Private Function LeerFrase(ByVal Canal As Integer) As String
     Dim Frase As String
     Input(Canal, Frase)
     Return Frase
  End Function
 
  Sub Main()
     Dim Canal As Integer
     AbreArchivo("Nuevo.txt", Canal)
     Console.WriteLine(LeerFrase(Canal))
     FileClose(Canal)
     Console.ReadLine()
  End Sub
End Module




Autor del curso: casiopea


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

necesito ayuda con el algoritmo de dijkstra en ...

mery Python 0 Jueves 13 Dic 2018 18:07 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso de PHP-WordPress avanzado

wordpressadict PHP 1 Domingo 27 Nov 2016 19:59 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Porque no puedo descargar archivos desde la nube?

reeccom Visual Basic .NET 0 Sábado 28 May 2016 18:08 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso fundamentos de programación

Yaser Programación en general 0 Miércoles 18 May 2016 00:28 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Procesar y facturar con archivos .xml mediante ...

Monje_Babuino C, C#, Visual C++ 0 Viernes 04 Mar 2016 16:53 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,