En esta sección se ve un repaso básico de las tres formas de trabajar con diferentes tipos de archivos en visual basic: Archivos secuenciales, archivos aleatorios y archivos binarios.
Por último en el final de la sección, se describe como utilizar sentencias y funciones propias de visual basic para trabajar con archivos y directorios del sistema operativo, como por ejemplo la sentencia Dir para buscar ficheros, Filecopy para copiar , ChDir, Mkdir para crear carpetas y algunas otras funciones relacionadas.
En esta sección se ve un repaso básico de las tres formas de trabajar con diferentes tipos de archivos en visual basic: Archivos secuenciales, archivos aleatorios y archivos binarios.
Por último en el final de la sección, se describe como utilizar sentencias y funciones propias de visual basic para trabajar con archivos y directorios del sistema operativo, como por ejemplo la sentencia Dir para buscar ficheros, Filecopy para copiar , ChDir, Mkdir para crear carpetas y algunas otras funciones relacionadas.
2 - Sentencia Open
Esta sentencia es la encargada de abrir o crear un archivo, ya sea para leer datos del mismo, sobre escribirlos y/o para agregarle datos.Esta sentencia tiene una serie de parámetros que varían de acuerdo a lo que queramos hacer.
Por ejemplo :
Open "c:\prueba.txt" For Input As #1
Este ejemplo abre un archivo para poder acceder a los datos que contenga en su interior. cuando decimos abrir, estamos diciendo que se encuentra actualmente abierto y alojado en la memoria ram para poder manipularlo.
En el primer parámetro indicamos el path del archivo en el que queremos trabajar.
Luego la palabra "As #1" indica el número de archivo que estamos utilizando. Este número lo asignamos nosotros y va desde el rango 1 al 511. El "número de archivo" se utiliza para poder diferenciar al archivo en el código. Cada archivo que se encuentra abierto no se puede asignar un número de archivo igual, ya que nos daría un error en tiempo de ejecución.
Por ejemplo no podríamos hacer esto:
Open "archivo1.txt" For Input As #1
Open "otroarchivo1.txt" For Input As #1
Open "otroarchivo1.txt" For Input As #1
Una vez que terminamos de trabajar con un archivo que se encuentra abierto y que no lo vamos a utilizar mas, debemos cerrarlo. para ello se utiliza la sentencia Close seguido del número de archivo que lo identifica.
Por ejemplo:
Close #2
Esto cerrará al archivo abierto que anteriormente le asignamos el número de archivo 2. También si tengo 3 archivos abiertos podría hacer lo siguiente:
Close #1, #2, #3
Si utilizamos la sentencia Close sin ningún parámetro, o mejor dicho ningún número de archivo, se cerrarán todos los archivos cargados en memoria por nuestra aplicación (los que nosotros abrimos con Open).
Por lo general, si trabajamos con varios archivos abiertos simultáneamente, es aconsejable utilizar la sentencia Close sin ningún parámetro, de este modo cuando termine de ejecutarse el procedimiento se cerrarán todos los archivos abiertos.
Hay una función en Visual basic llamada FreeFile. Esta función lo que hace es darnos un número de archivo que esté libre y que se pueda usar, para que de este modo no intentamos abrir uno esté siendo utilizado, y evitar un error en tiempo de ejecución. Para usar la función es muy fácil, por ejemplo:
Dim NumeroArchivo As Integer
NumeroArchivo = FreeFile
Open "La ruta de un archivo" For Input As #NumeroArchivo
NumeroArchivo = FreeFile
Open "La ruta de un archivo" For Input As #NumeroArchivo
3 - Archivos secuenciales
Los archivos secuenciales se denominan de esta manera por que la forma de escribir y leer los datos en un archivo es, desde el principio hasta el fin del archivo, es decir, si yo quisiera acceder a un determinado dato del archivo y este dato se encuentra en la mitad del archivo, para llegar a ese dato necesito pasar por todos los demás datos, de forma secuencial.
Por lo general se suelen utilizar los archivos secuenciales, para trabajar con archivos que contengan una estructura de datos no muy compleja. por que por ejemplo, si utilizáramos un archivo para almacenar 50000 nombres con sus respectivos datos (apellido, teléfono, dirección etc...) , este mecanismo resultaría ineficiente, ya que si quisiera recuperar por ejemplo el registro n° 3650, para leer este dato tendría que pasar previamente por los 3649 registros anteriores a este, haciendo mas lento el acceso y por lo tanto desperdiciando recursos del sistema.
4 - Diferentes tipos de acceso
Append: esta sentencia se utiliza para agregar información a un archivo de texto.
Ejemplo :
Open "c:\miarchivo.txt" For Append As #1
Si el archivo ya contiene datos, se le agregarán al mismo al final del archivo, si no contenía datos los agrega igual. Si el archivo no existe, lo crea y le agrega los datos.
Input: la sentencia Input se utiliza para leer datos de un archivo de texto, ejemplo:
Open "c:\miarchivo.txt" For Input As #2
Este ejemplo abre un archivo para leer los datos del mismo. En las próximas líneas veremos ejemplos de como leer los datos , escribir y guardar.
Una cosa importante con respecto a leer datos de un archivo con Input es que, si el archivo que queremos abrir, no existe, se producirá un error en tiempo de ejecución al intentar abrir un archivo que no existe, por eso debemos verificar la ruta del mismo siempre que esté bien escrita en la sentencia Open y evitarnos dolores de cabeza, y simpre añadir algún manejador de error para este caso
Output: esta sentencia se utiliaza para crear un archivo de texto y grabar datos. Esta es igual que Append salvo por un gran detalle:
Output crea el archivo y le agrega información, pero si el archivo existía y contenía información previa, sobre escribe todos los datos del archivo por los datos nuevos, perdiendo los anteriores datos.
Si accedemos con Output a un archivo que no existe, no se produce un error, si no que se crea dicho archivo.
Conclusión : si vamos a añadir datos a un archivo existente (para actualizarlo por ejemplo) hay que utilizar la sentencia Append. si vamos a crear un archivo vacío y nuevo para grabar nuevos datos, hay que utilizar la sentencia Output. si vamos a abrir un archivo para leer datos utilizamos la sentencia Input.
5 - Leer datos de un archivo utilizando Line Input
C omo se comentó antes , para leer datos de un archivo se utiliza la sentencia Input.
pero para leer los datos del archivo y poder utilizarlos en nuestro programa se utilizan 2 sentencias o instrucciones: Line Input e Input.
Ejemplo:
Dim mivariable As String
Open "c:\nombres.txt" For Input As #1
While Not EOF(1)
Line Input #1, mivariable
Wend
Close #1
Open "c:\nombres.txt" For Input As #1
While Not EOF(1)
Line Input #1, mivariable
Wend
Close #1
En el ejemplo anterior aparece una función nueva llamada EOF. Esta función significa End Of File o fin de archivo.
Cuando abrimos un archivo para leer información con Input, debemos saber en que momento llegamos al final del archivo, por que de lo contrario la sentencia Line Input o Input seguiría leyendo líneas donde no existen datos después del fin del archivo, y por lo tanto se produciría un error en tiempo de ejecución por querer leer un dato que no existe.
Mediante la condición Not Eof(1) leeremos los datos hasta que llegue al final del archivo, y en cada pasada del bucle While se almacenará en la variable mivariable, línea por línea los datos del mismo. Es evidente que como está planteado el ejemplo habría que manipular los datos leídos y agregar otras instrucciones, por que en este ejemplo la variable mivariable solo almacenaría los datos de la línea que está leyendo y borrando los datos de las líneas que almacenó anteriormente. Mas adelante veremos como solucionar esto.
conclusión : para leer datos de un archivo se utiliza la sentencia Line Input y luego de la coma debemos poner una variable nuestra para almacenar los datos que se van leyendo de la línea actual
2 - Sentencia Open
Esta sentencia es la encargada de abrir o crear un archivo, ya sea para leer datos del mismo, sobre escribirlos y/o para agregarle datos.Esta sentencia tiene una serie de parámetros que varían de acuerdo a lo que queramos hacer.
Por ejemplo :
Open "c:\prueba.txt" For Input As #1
Este ejemplo abre un archivo para poder acceder a los datos que contenga en su interior. cuando decimos abrir, estamos diciendo que se encuentra actualmente abierto y alojado en la memoria ram para poder manipularlo.
En el primer parámetro indicamos el path del archivo en el que queremos trabajar.
Luego la palabra "As #1" indica el número de archivo que estamos utilizando. Este número lo asignamos nosotros y va desde el rango 1 al 511. El "número de archivo" se utiliza para poder diferenciar al archivo en el código. Cada archivo que se encuentra abierto no se puede asignar un número de archivo igual, ya que nos daría un error en tiempo de ejecución.

Open "archivo1.txt" For Input As #1
Open "otroarchivo1.txt" For Input As #1
Open "otroarchivo1.txt" For Input As #1
Una vez que terminamos de trabajar con un archivo que se encuentra abierto y que no lo vamos a utilizar mas, debemos cerrarlo. para ello se utiliza la sentencia Close seguido del número de archivo que lo identifica.
Por ejemplo:
Close #2
Esto cerrará al archivo abierto que anteriormente le asignamos el número de archivo 2. También si tengo 3 archivos abiertos podría hacer lo siguiente:
Close #1, #2, #3
Si utilizamos la sentencia Close sin ningún parámetro, o mejor dicho ningún número de archivo, se cerrarán todos los archivos cargados en memoria por nuestra aplicación (los que nosotros abrimos con Open).
Por lo general, si trabajamos con varios archivos abiertos simultáneamente, es aconsejable utilizar la sentencia Close sin ningún parámetro, de este modo cuando termine de ejecutarse el procedimiento se cerrarán todos los archivos abiertos.
Hay una función en Visual basic llamada FreeFile. Esta función lo que hace es darnos un número de archivo que esté libre y que se pueda usar, para que de este modo no intentamos abrir uno esté siendo utilizado, y evitar un error en tiempo de ejecución. Para usar la función es muy fácil, por ejemplo:
Dim NumeroArchivo As Integer
NumeroArchivo = FreeFile
Open "La ruta de un archivo" For Input As #NumeroArchivo
NumeroArchivo = FreeFile
Open "La ruta de un archivo" For Input As #NumeroArchivo
3 - Archivos secuenciales
Los archivos secuenciales se denominan de esta manera por que la forma de escribir y leer los datos en un archivo es, desde el principio hasta el fin del archivo, es decir, si yo quisiera acceder a un determinado dato del archivo y este dato se encuentra en la mitad del archivo, para llegar a ese dato necesito pasar por todos los demás datos, de forma secuencial.

4 - Diferentes tipos de acceso
Append: esta sentencia se utiliza para agregar información a un archivo de texto.
Ejemplo :
Open "c:\miarchivo.txt" For Append As #1
Si el archivo ya contiene datos, se le agregarán al mismo al final del archivo, si no contenía datos los agrega igual. Si el archivo no existe, lo crea y le agrega los datos.
Input: la sentencia Input se utiliza para leer datos de un archivo de texto, ejemplo:
Open "c:\miarchivo.txt" For Input As #2
Este ejemplo abre un archivo para leer los datos del mismo. En las próximas líneas veremos ejemplos de como leer los datos , escribir y guardar.
Una cosa importante con respecto a leer datos de un archivo con Input es que, si el archivo que queremos abrir, no existe, se producirá un error en tiempo de ejecución al intentar abrir un archivo que no existe, por eso debemos verificar la ruta del mismo siempre que esté bien escrita en la sentencia Open y evitarnos dolores de cabeza, y simpre añadir algún manejador de error para este caso
Output: esta sentencia se utiliaza para crear un archivo de texto y grabar datos. Esta es igual que Append salvo por un gran detalle:
Output crea el archivo y le agrega información, pero si el archivo existía y contenía información previa, sobre escribe todos los datos del archivo por los datos nuevos, perdiendo los anteriores datos.
Si accedemos con Output a un archivo que no existe, no se produce un error, si no que se crea dicho archivo.
Conclusión : si vamos a añadir datos a un archivo existente (para actualizarlo por ejemplo) hay que utilizar la sentencia Append. si vamos a crear un archivo vacío y nuevo para grabar nuevos datos, hay que utilizar la sentencia Output. si vamos a abrir un archivo para leer datos utilizamos la sentencia Input.
5 - Leer datos de un archivo utilizando Line Input
C omo se comentó antes , para leer datos de un archivo se utiliza la sentencia Input.
pero para leer los datos del archivo y poder utilizarlos en nuestro programa se utilizan 2 sentencias o instrucciones: Line Input e Input.
Ejemplo:
Dim mivariable As String
Open "c:\nombres.txt" For Input As #1
While Not EOF(1)
Line Input #1, mivariable
Wend
Close #1
Open "c:\nombres.txt" For Input As #1
While Not EOF(1)
Line Input #1, mivariable
Wend
Close #1
En el ejemplo anterior aparece una función nueva llamada EOF. Esta función significa End Of File o fin de archivo.
Cuando abrimos un archivo para leer información con Input, debemos saber en que momento llegamos al final del archivo, por que de lo contrario la sentencia Line Input o Input seguiría leyendo líneas donde no existen datos después del fin del archivo, y por lo tanto se produciría un error en tiempo de ejecución por querer leer un dato que no existe.
Mediante la condición Not Eof(1) leeremos los datos hasta que llegue al final del archivo, y en cada pasada del bucle While se almacenará en la variable mivariable, línea por línea los datos del mismo. Es evidente que como está planteado el ejemplo habría que manipular los datos leídos y agregar otras instrucciones, por que en este ejemplo la variable mivariable solo almacenaría los datos de la línea que está leyendo y borrando los datos de las líneas que almacenó anteriormente. Mas adelante veremos como solucionar esto.
conclusión : para leer datos de un archivo se utiliza la sentencia Line Input y luego de la coma debemos poner una variable nuestra para almacenar los datos que se van leyendo de la línea actual