07_Archivos

Anuncio
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
Archivos en VB.Net.
Contenidos del tema
1. Archivos de datos. Introducción.....................................................................................2
1. Utilizando las funciones integradas, propias de VbNet............................................. 3
1.2. Utilizando la clase Stream del espacio de nombres ‘System.IO’............................6
Consideraciones de programación................................................................................10
2. Gestión del sistema de archivos .................................................................................. 13
3. Anexo 1. El espacio de nombres ‘System.IO de .Net’................................................. 17
4. Bibliografía...................................................................................................................20
En este capítulo vamos a tratar sobre la utilización de archivos de datos con VB.Net,
Fundamentalmente se comentarán los métodos de trabajo, tanto propios de las versiones
previas a .Net, tanto como las propias a la plataforma .Net.
Así mismo se especificarán los métodos y propiedades para manejar el sistema de archivos
y directorios.
Se proponen dos ejercicios, un editor básico de texto y una agenda de datos.
Prof.: Justo Sáez Arenas
_ Dpto Informática _
1
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
1. Archivos de datos. Introducción.
Hasta ahora todos los datos que han manejado nuestros programas han sido temporales, es
decir, se perdían cuando finaliza el programa. Esta situación no es la mas deseable, ya que
en la mayoría de los casos interesa almacenar los datos que estamos manipulando.
Una de las formas más frecuente de almacenar los datos es mediante archivos. En Visual
Basic se dispone de dos clases de archivos:
• Secuenciales: están constituidos por una sucesión de caracteres de texto almacenados
consecutivamente. Esto supone que para acceder a un elemento concreto hay que
pasar previamente por los elementos que le anteceden.
• Binarios: permiten el almacenamiento de datos como una secuencia de bytes. Por
tanto, no importa el tipo de dato que almacenen ni su longitud de registro1.
El acceso secuencial funciona mejor cuando se desea procesar archivos compuestos
únicamente de texto, como los archivos creados con un editor de texto habitual, y no
archivos en los que los datos se dividen en una serie de registros. El acceso secuencial no
es adecuado para almacenar largas series de números, puesto que cada número se almacena
como una cadena de caracteres. Así, un número de cuatro dígitos necesitaría cuatro bytes
de almacenamiento en lugar de los dos bytes que se necesitan para almacenar el mismo
número como un entero.
Básicamente las funciones que intentaremos realizar, consistirán en conseguir manejar
archivos de texto de forma que podamos:


Escribir y leer datos de una sola vez.
Escribir y leer datos línea a línea.
Para ello vamos a hacer dos programas ejemplo:
1. Editor:
Carga un archivo de texto en un TextBox.
 Guarda los datos de un TextBox en un archivo
2. Agenda:
 Lee la información de un fichero línea a línea y lo carga en un array de
memoria.
 Vuelca la información de un array en un fichero.

En ‘Visual Basic .Net’, se pueden manejar los archivos de texto, de dos formas:
1 Este tipo de ficheros no lo trataremos en este tema.
Prof.: Justo Sáez Arenas
_ Dpto Informática _
2
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
1. Utilizando las funciones integradas, propias del lenguaje ‘Visual Basic .Net’.
2. Utilizando la clase Stream del espacio de nombres System.IO, común a la
plataforma .Net.
Veremos ambas, pero haremos hincapié en la segunda, puesto que es la forma más
novedosa y quizás también algo más complicada de entender, puesto que se fundamenta en
la utilización de las clases y objetos propios de .Net.
Aunque a primera vista, parezca más fácil de utilizar las funciones propias de VB,
pensemos que si sabemos como utilizar las clase comunes de ‘.Net’, nos puede servir para
utilizarlo con cualquier otro lenguaje de la plataforma.
1. Utilizando las funciones integradas, propias de VbNet
Vienen proporcionadas por el objeto FileSystem. Es similar a como se utilizaba en la
versión anterior de VB.
Las principales funciones integradas son:





FileOpen. Abre un archivo de texto para entrada o salida.
LineInput. Lee una línea de entrada desde de un archivo de texto.
EOF. Comprueba el final del archivo.
PrintLine.
FileClose. Cierra el archivo.
Abrir un archivo para acceso secuencial
Cuando se abre un archivo para acceso secuencial, se debe especificar si se van a extraer
caracteres del archivo (modo Input), si se van a escribir caracteres en el archivo (modo
Output) o si se van a anexar caracteres al archivo (modo Append).
Utilizar FileOpen (Función) con la siguiente sintaxis:
FileOpen(FileNumber, FileName, OpenMode.[Input,Output,Append])
Donde:
FileNumber: Es un número que se asigna al fichero abierto. Podemos especificarlo
nosotros directamente pero es aconsejable solicitarlo previamente al sistema, para
ello tenemos la función FreeFile(), que solicita un número al sistema para asignarlo
al fichero que utilizaremos.
Para pedir un numero de fichero se haría:
Dim n_fich as byte
Prof.: Justo Sáez Arenas
_ Dpto Informática _
3
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
n_fich= FreeFile()
FileName: Es el nombre de fichero que se quiere utilizar. Si no especifica la ruta
completa lo buscará en el directorio por defecto.
OpenMode: Cuando se abre un archivo secuencial para Input, el archivo ya debe
existir; de lo contrario, se producirá un error. No obstante, cuando se intenta abrir
un archivo inexistente para Output o Append, la instrucción FileOpen primero
crea el archivo y a continuación lo abre.
Una vez que se abre un archivo para una operación debe cerrarse con la instrucción
FileClose (FileNumber) antes de volver abrirlo para otro tipo de operación.
Para editar un archivo, primero se debe leer su contenido en variables del programa,
después realizar las operaciones que se quieran realizar con los datos y finalmente volver a
escribir las variables en el archivo. En las siguientes secciones se describe como se editan
los registros abiertos para acceso secuencial.
Leer cadenas de archivos
Para leer cadenas de ficheros:
1. Recuperar el contenido de un archivo de texto abriéndolo para Input.
2. Utilizar las funciones LineInput, InputString o Input para copiar el archivo a
variables de programa.
Visual Basic proporciona instrucciones y funciones que leen y escriben archivos
secuenciales carácter a carácter o línea a línea. Por ejemplo, el siguiente fragmento de
código lee un archivo línea a línea:
Dim LineasFich, lineaSig As String, NumFichero As Integer
NumFichero = FreeFile()
Do Until EOF(NumFichero)
LineaSig = LineInput(NumFichero)
LineasFich = LineasFich & LineaSig & Chr(13) & Chr(10)
Loop
Aunque la función LineInput reconoce el fin de una línea cuando llega a la secuencia
retorno de carro y de salto de línea, no incluye esa secuencia cuando lee la línea en la
variable. Si se desea conservar el retorno de carro y el saldo de línea, el código deberá
agregarlos.
Prof.: Justo Sáez Arenas
_ Dpto Informática _
4
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
Puede utilizarse la función InputString para copiar un número especificado de caracteres
desde un archivo a una variable, siempre que la variable sea lo bastante grande. Por
ejemplo, el siguiente código utiliza InputString para copiar el número de caracteres de
CharCount a una variable:
LineasFich = InputString(NumFichero, NumCaracteres)
En combinación con la instrucción LOF(fichero) que nos devuleve la longitud del fichero,
podemos utilizar esta función para leer el fichero en una sola instrucción:
Dim TodoelTexto as string.
TodoelTexto = InputString(n_fich, LOF(n_fich)
También se puede utilizar la función Input, que lee una lista de números y expresiones de
cadena desde un archivo. Por ejemplo, para leer una línea de un archivo de listas de
distribución, puede utilizar las siguientes instrucciones:
Input(NumFichero, fname);
Input(NumFichero, lname);
Input(NumFichero, street)
Escribir cadenas en archivos
Para escribir en un archivo:
1. Utilizar FileOpen (Función) para abrir un archivo de texto para Output o Append.
2. Utilizar una función para escribir las cadenas. Por ejemplo:
Print(NumFichero, Cadena)
Visual Basic también admite la función Write, que escribe una lista de números y
expresiones de cadena en un archivo. Separa automáticamente cada expresión mediante
una coma y pone entre comillas las expresiones de tipo String. Por ejemplo:
Dim AnyString As String, AnyNumber, FileNum As Integer
AnyString = "Cualquier cosa"
AnyNumber = 23445
Write(FileNum, AnyString, AnyNumber)
Print(FileNum, AnyString & AnyNumber)
Prof.: Justo Sáez Arenas
_ Dpto Informática _
5
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
El segmento de código anterior escribe dos expresiones en el archivo especificado por
FileNum. La primera contiene una cadena, y la segunda el número 23445. Por tanto, Visual
Basic escribe los siguientes caracteres (incluida toda la puntuación) en el archivo:
Escrito con Write:
"Cualquier cosa", 23445
Escrito con Print:
Cualquier cosa23445
Una de las principales diferencias entre Print y Write es que Print da formato a la cadena,
mientras que Write no. Por este motivo, Print no encierra entre comillas la cadena, que
tiene el formato que el usuario quiere ver, mientras que Write sí.
Utiliza una función que escriba cada cadena en una línea nueva, por ejemplo PrintLine o
WriteLine si requiere cadenas separadas por líneas.
Cerrar archivos.
Utilizar FileClose() con la siguiente sintaxis:
FileClose(FileNumber)
Si se omite FileNumbers(), todos los archivos activos abiertos con la función FileOpen se
cerrarán.
Cuando se cierra un archivo abierto originalmente para Output o Append, el búfer final de salida se
escribirá en el búfer del sistema operativo correspondiente a dicho archivo. Todo el espacio de
búfer asociado al archivo cerrado se liberará.
Cuando se ejecuta la función FileClose, finaliza la asociación de un archivo a su número de
archivo.
1. 2. Utilizando la clase Stream del espacio de nombres ‘System.IO’.2
Común a la plataforma ‘.Net’. Con este sistema utilizamos las características comunes a la
plataforma, utilizando métodos que serían válidos en cualquiera de sus lenguajes de
programación.
El manejo de ficheros se basa en la utilización de una secuencia, flujo o corriente de
información (stream, en inglés) que no es más que un objeto que hace de intermediario
entre el programa y el origen o el destino de la información. De esta forma el programa lee
o escribe en el stream sin importarle desde donde viene la información o a donde va.
2 Adaptado de la ayuda de Visual Studio .Net
Prof.: Justo Sáez Arenas
_ Dpto Informática _
6
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
El modelo ‘.Net’ proporciona una herramienta basada en objetos para trabajar con carpetas
y archivos. Permite utilizar sintaxis estándar objeto.método (con su propio conjunto de
propiedades, métodos y eventos) para leer y escribir fácilmente en los archivos.
El espacio de nombres (una especie de librería de funciones) ’System.IO’ incluye una
biblioteca de clases que facilita la manipulación de cadenas, caracteres y archivos. Estas
clases contienen propiedades, métodos y eventos para crear, copiar, mover y eliminar
archivos. Y puesto que se admiten tipos de datos numéricos y de cadena, también se
pueden incorporar tipos de datos en los archivos. Las clases más utilizadas son
FileStream, StreamReader, StreamWriter, BinaryReader y BinaryWriter,.
En las próximos páginas veremos:


Acceso a archivos mediante la clase FileStream. Proporciona el enlace básico de
acceso a archivos.
Acceso a archivos mediante las clases StreamReader y StreamWriter. Describe
cómo leer y escribir de datos de texto en un archivo.
Acceso a archivos mediante la clase FileStream
La clase FileStream proporciona acceso a archivos, incluidos los dispositivos de entrada,
salida y de error estándar. Se utiliza con la clase File, que ayuda a crear objetos
FileStream y proporciona rutinas para crear, copiar, eliminar, mover y abrir archivos. Otra
clase, Path, proporciona un medio para manipular cadenas que representan rutas de acceso
a archivos o carpetas.
Algunos de los parámetros que se utilizan son tipos de datos enumerados, como
FileAccess, FileMode y FileShare, FileEnumerator que contiene información referente a
la forma de crear, abrir y compartir archivos.
La enumeración FileAttributes permite la recopilación de información específica de
archivos. La enumeración FileAttributes devuelve los atributos almacenados del archivo,
por ejemplo, si es un archivo de almacenamiento, comprimido, de directorios, cifrado,
oculto, de sólo lectura, del sistema o temporal.
Las clases StreamReader y StreamWriter se derivan a su vez de sendas clases abstractas
denominadas TextReader y TextWriter.
Para representar los caracteres de texto se utiliza la codificación UTF-8 que controla
caracteres Unicode correctamente y garantiza que las versiones adaptadas del sistema
operativo sean coherentes entre sí.
Se puede detectar la codificación de un archivo automáticamente con StreamReader o
puede especificarse como un parámetro concreto a la hora de hacer la llamada a la clase.
Para poder utilizar las clases del espacio de nombres ‘System.IO’, se debe especificar en la
primera línea del código:
Prof.: Justo Sáez Arenas
_ Dpto Informática _
7
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
Imports System.IO
Crear objeto FileStream asociado a un archivo.
Obj_FileStream = new FileStream(FileName, FileMode.Modoapertura)
Donde:
-
FileName, es la ruta y nombre del archivo a asociar.
Modoapertura, puede ser Open, Create, Append, CreateNew, OpenOrCreate y
Truncate3 [3].
Leer cadenas de un Stream
Una vez abierto el archivo, podemos leer su contenido con los siguientes métodos:
●
Obj_FileStream.Read ‘Lee un caracter
●
Obj_FileStream.ReadLine
●
Obj_FileStream.ReadToEnd
‘Lee linea a linea
‘Lee todo el contenido
Escribir cadenas en Stream.
Para escribir en un archivo:
●
Obj_FileStream.Write
‘escribe un caracter.
●
Obj_FileStream.WriteLine ‘Escribe un linea.
Cerrar archivos.
●
Obj_FileStream.Close
Cierra el archivo y libera todos los recursos asociados a la secuencia.
El siguiente ejemplo muestra cómo se utilizan StreamReader y StreamWriter para leer y
escribir información de un archivo ("datos.txt"), mediante un TextBox:
3 Consultar la ayuda de VB.Net para ver detalles.
Prof.: Justo Sáez Arenas
_ Dpto Informática _
8
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
'Declaramos variables globales.
Public FS As FileStream
'FS como secuencia de conex. a un archivo.
Public f_Lee As StreamReader
'Filtro de secuencia lectura
Dim f_Escr As StreamWriter
'Filtro de secuencia escritura
'Procedimiento para abrir y leer el archivo.
Private Sub mnu_abrir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles mnu_abrir.Click
FS = New FileStream("c:\datos.txt", FileMode.Open) 'Nuevo secuencia archivo.
f_Lee = New StreamReader(FS)
'Secuencia de lectura sobre FS
TextBox1.Text = f_Lee.ReadToEnd() 'Carga el fichero en el Textbox
mnu_abrir.Enabled = False
f_Lee.Close()
'Cierra el secuencia de lectura
End Sub
'Procedimiento para cerrar y escribir el archivo.
Private Sub mnu_guardar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles mnu_guardar.Click
FS = New FileStream("c:\justo.txt", FileMode.Create) 'Nuevo secuencia archivo.
f_Escr = New StreamWriter(FS)
f_Escr.Write(TextBox1.Text)
f_Escr.Close()
'Secuencia de escritura sobre FS
'Vuelca el textbox en el fichero
'Cierra el secuencia de escritura
mnu_cerrar.Enabled = True
End Sub
El siguiente ejemplo muestra cómo se utilizan StreamReader para leer información de un
archivo ("datos.txt"), y cargarlo en un ListBox:
'Procedimiento para leer un archivo línea a línea y cargarlo en un listbox.
Private Sub mnu_cargalist_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles mnu_abrir.Click
Prof.: Justo Sáez Arenas
_ Dpto Informática _
9
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
FS = New FileStream("c:\datos.txt", FileMode.Open) 'Nuevo secuencia archivo.
f_Lee = New StreamReader(FS)
'Secuencia de lectura sobre FS
Dim itm as Object
Itm = f_lee.ReadLine()
While itm <> Nothing ’Mientras haya datos
ListBox1.Items.Add(itm)
Itm = f_lee.ReadLine()
End While
f_Lee.Close()
'Cierra el secuencia de escritura
End Sub
Consideraciones de programación.
1. Importante no olvidar la instrucción imports System.IO al comienzo del módulo.
2. Textbox. Ajustar las propiedades Multiline a 'True' y ScrolBars a 'Both'.
Prof.: Justo Sáez Arenas
_ Dpto Informática _
10
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
Ejemplos:
Programa editor.
Realizar el programa editor del apartado anterior con la clase FileStream.
Ejemplo: Programa ‘Editor’.
Para ilustrar la utilización de éste modo de trabajo,
haremos un programa que básicamente consiste en
realizar un formulario con un textbox y un menú, donde
cargar datos desde un fichero o guardar los datos del
textbox en un fichero.
Intentaremos sincronizar la activación de los diferentes
apartados del menú, de tal forma que estén activados o
desactivados cuando sea oportuno.
Debajo tendremos una Barra de Estado donde nos muestra el nombre del archivo en uso.
Proyecto Agenda. Utilización conjunta de ficheros y arrays de memoria.
Para ilustrar la utilización de éste modo de trabajo, haremos un programa agenda. Además
de utilizar ficheros utilizaremos un array de datos en memoria.
Básicamente el modo de trabajo consiste en:
Prof.: Justo Sáez Arenas
_ Dpto Informática _
11
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
• Abrir un fichero que contiene los datos y cargarlo en el array de memoria.
(Procedimiento cargar_datos). El fichero está constituido por lineas que contienen el
nombre y el teléfono
• Cargar los datos del array en un listbox del formulario.(Procedimiento cargar_listado)
• Una vez visualizados los datos en el Listbox, al seleccionar uno de ellos nos lo muestra
en la caja de texto de ‘Nombre y Tfno’, pudiendo utilizar el botón Modificar, para
permitir su dicción y modificar el dato. El botón habrá cambiado a ‘Guardar’ y al
pulsarlo guardará el dato modificado en el array y actualizará el Listbox.
• Cuando se decida guardar los datos se lee el array y se guardan sus datos en el fichero.
(Procedimiento guardar_fich). Tendremos dos opciones ‘Guardar’, que guarda
directamente los datos en el fichero que se abrió y ‘Guardar como’ que permitirá al
usuario elegir un nuevo fichero donde guradar los datos, mediante un SaveFileDialog.
El programa está construido con un formulario y un módulo.
- En el formulario además de los propios procedimientos de los controles, hay uno
añadido que se llama cuando sea necesario actualizar los datos del listbox
(cargar_listado).
- En el módulo tenemos dos procedimientos uno para lectura (carga_datos) y otro para
escritura (guarda_fich) del fichero. Es muy importante asegurarse que la
primera linea de código del módulo es ‘Imports System.IO’, necesaria para la
utilización de la clase FileStream. Además aquí se declaran como variables
públicas las variables que necesitamos para manejar el fichero (FS, f_lee, f_escr),
un array de 30 elementos y dos variables que indican cuantos elementos tenemos
(tot_datos) y cual es el activo en un momento dado (dato_activo).
Opcionalmente y como complemento se utiliza una Barra de estado con paneles
informativos.
Consideraciones a tener en cuenta:
Para utilizar el listbox en el módulo, lo podemos pasar como parámetro a la función
cargar_listado, de tal forma, que si el listbox se llama ListBox1, lo utilicemos como sigue:
En el formulario principal:
Call cargar_listado(ListBox1)
En el módulo:
Public cargar_listado(lista as string)
Un bucle que recorre el array (por ejemplo agenda()), para cada elemento lo añade al
listbox como sigue:
Lista.items.add(agenda(i))
Prof.: Justo Sáez Arenas
_ Dpto Informática _
12
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
2. Gestión del sistema de archivos .
Otra cuestión a tener en cuenta son las operaciones de gestión del sistema de archivos.
Al igual que para operar con los datos de archivos teníamos dos opciones (utilizar las
funciones incorporadas por VB o utilizar las clases de la plataforma ‘.Net’), con el sistema
de archivos pasa lo mismo.
Gestión de archivos con funciones propias de Visual Basic.
Visual Basic tiene órdenes bajo Windows que interaccionan directamente con el sistema
operativo subyacente, reproduciendo las órdenes normales del sistema operativo que
gestionan archivos y unidades en su máquina.
Se utilizan estas órdenes seguidas de una cadena o variable de cadena. Por ejemplo
MkDir “C:\DIRPRUEBA”
‘añadirá un subdirectorio nuevo denominado DIRPRUEBA en el directorio raíz de
la unidad C.
Tenemos las siguientes ordenes:
• ChDrive unidad
Cambia la unidad actual para el DOS.
• ChDir ruta
Cambia el directorio por defecto.
• MkDir ruta
Crea un directorio nuevo.
• RmDir ruta
Borra un directorio.
• Name ruta
Cambia el nombre de un archivo o lo traslada o otro directorio.
• Kill ruta
Borra un archivo del disco.
• CurDir [(unidad)]
• FileCopy
Devuelve la ruta de acceso actual.
Origen, Destino
Copia un archivo de la vía de acceso origen a otra vía.
No admite el uso de comodines.
Si se intenta utilizar la función en un archivo abierto actualmente, se producirá un
error.
Prof.: Justo Sáez Arenas
_ Dpto Informática _
13
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
• FileDateTime (Nombre_ruta)
Devuelve la fecha y la hora en que se creó o se modificó por última vez un archivo.
Nombre_ruta es una expresión de cadena que especifica un nombre de archivo. Puede
incluir el directorio o carpeta y la unidad de disco.
• GetAttr(nombre_ruta)
Devuelve un tipo integer que representa los atributos de un archivo, directorio o
carpeta.
El valor devuelto por la función GetAttr es la suma de los siguientes valores de
atributos:
Constante
Valor
Atributo
vbNormar
0
Normal
vbReadOnly
1
Sólo lectura
vbHidden
2
Oculto
vbSystem
4
Archivo de sistema
vbDirectory
16
Directorio o carpeta
vbArchive
32
El archivo ha sido modificado después de
efectuar la última copia de seguridad
• SetAttr
NombreArch, Atributos
Establece los atributos para los archivos. Utilizando los mismos valores de la tabla
anterior, se pueden cambiar los distintos atributos.
Se pueden utilizar las mismas constantes simbólicas que las de la tabla anterior. Por
ejemplo:
SetAttr NombreArch, vbHidden+VbReadOnly
‘ ocultará y hará que el archivo sea de sólo lectura
Prof.: Justo Sáez Arenas
_ Dpto Informática _
14
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
Operaciones con unidades, carpetas y ficheros mediante clases4.
‘Visual Basic.NET’ permite trabajar con carpetas y unidades mediante la clase Directory.
Esta clase proporciona la posibilidad de crear, editar y eliminar carpetas, así como
mantener las unidades del sistema.
En la tabla siguiente se muestran los métodos de la clase Directory que se usan con más
frecuencia:
Método
Descripción
GetCurrentDirectoryDevuelve el directorio actual en el que se encuentra la
aplicación.
SetCurrentDirectory Establece el directorio actual.
CreateDirectory
Crea todos los directorios especificados por path.
Delete
Sobrecargado. Elimina un directorio y su contenido.
Exists
Determina si la ruta de acceso dada se refiere a un objeto
DirectoryInfo existente en el disco.
GetDirectories
Sobrecargado. Obtiene una matriz de directorios en el
directorio actual.
GetDirectoryRoot
Devuelve la parte de raíz de la ruta de acceso especificada.
GetLogicalDrives
Recupera los nombres de unidades lógicas en el equipo
actual.
GetParent
Recupera el directorio primario de la ruta de acceso
especificada.
Move
Mueve un objeto DirectoryInfo y su contenido a una nueva
ruta de acceso.
Hay que indicar: Impots System.IO al inicio del código.
Para saber la ruta donde se encuentra la aplicación activa, de la clase:
System.Reflection.Assembly.GetExecutingAssembly
La propiedad .Location devuelve la ruta de acceso completa
4 Ejemplos en “Visual Basic.Net”. E. Petroutsos. Ed Anaya, página 789 y siguientes.
Prof.: Justo Sáez Arenas
_ Dpto Informática _
15
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
La propiedad .Path devuelve sólo el nombre de archivo.
Así mismo para trabajar con archivos tenemos la clase File, que proporciona métodos para
crear, copiar, eliminar, mover y abrir archivos.
En la tabla siguiente se muestran los métodos de la clase File que se usan con más
frecuencia:
Método
Descripción
Copy
Copia un archivo existente en un archivo nuevo.
Delete
Elimina el archivo especificado en la ruta de acceso completa.
Exists
Determina si existe el archivo especificado.
Move
Mueve un archivo especificado a una nueva ubicación,
proporcionando la opción para indicar un nuevo nombre de archivo.
Prof.: Justo Sáez Arenas
_ Dpto Informática _
16
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
3. Anexo 1. El espacio de nombres ‘System.IO de .Net’
El espacio de nombres IO contiene tipos que permiten una lectura y escritura sincrónica y
asincrónica de los archivos y secuencias de datos.
Jerarquía del espacio de nombres.
• Tabla de Clases
Clase
Descripción
BinaryReader
Lee tipos de datos primitivos como valores binarios en
una codificación específica.
BinaryWriter
Escribe tipos primitivos en binario en una secuencia y
admite escribir cadenas en una codificación específica.
BufferedStream
Lee y escribe en otra secuencia. No se puede heredar esta
clase.
Directory
Expone métodos estáticos para crear, mover y enumerar
archivos en directorios y subdirectorios.
DirectoryInfo
Expone métodos de instancia para crear, mover y
enumerar archivos en directorios y subdirectorios.
DirectoryNotFoundException
Excepción que se inicia cuando no encuentra parte de un
archivo o directorio.
EndOfStreamException
Excepción que se inicia cuando se intenta realizar una
operación de lectura más allá del final de una secuencia.
ErrorEventArgs
Proporciona datos para el evento Error.
File
Proporciona métodos estáticos para crear, copiar,
eliminar, mover y abrir archivos y contribuye a la
creación de objetos FileStream.
FileInfo
Proporciona métodos de instancia para crear, copiar,
eliminar, mover y abrir archivos y contribuye a la
creación de objetos FileStream.
FileLoadException
La excepción que se inicia cuando se encuentra un
archivo pero no se puede cargar.
FileNotFoundException
Excepción que se inicia cuando se produce un error al
Prof.: Justo Sáez Arenas
_ Dpto Informática _
17
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
intentar tener acceso a un archivo que no existe en el
disco.
FileStream
Expone un objeto Stream alrededor de un archivo; se
admiten operaciones de lectura y escritura sincrónica y
asincrónica.
FileSystemEventArgs
Proporciona datos para los eventos de directorio
Changed, Created y Deleted.
FileSystemInfo
Proporciona la clase base para los objetos FileInfo y
DirectoryInfo.
FileSystemWatcher
Escucha las notificaciones de cambio del sistema de
archivos y provoca eventos cuando cambia un directorio
o un archivo de un directorio.
InternalBufferOverflowExceptio Excepción iniciada cuando se desborda el búfer interno.
n
IODescriptionAttribute
Establece la descripción que los diseñadores visuales
pueden mostrar cuando se hace referencia a un evento,
un extensor o una propiedad.
IOException
Excepción que se inicia cuando se produce un error de
E/S.
MemoryStream
Crea una secuencia cuyo almacén de respaldo es la
memoria.
Path
Ejecuta operaciones en instancias de String que
contienen información de rutas de archivos o directorios.
Estas operaciones se ejecutan de forma adecuada para
múltiples plataformas.
PathTooLongException
Excepción que se inicia cuando un nombre de ruta de
acceso o un nombre de archivo es más largo que la
longitud máxima definida por el sistema.
RenamedEventArgs
Proporciona datos para el evento Renamed.
Stream
Proporciona una vista genérica de una secuencia de
bytes.
StreamReader
Implementa un TextReader que lee los caracteres de una
secuencia de bytes en una codificación determinada.
Prof.: Justo Sáez Arenas
_ Dpto Informática _
18
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
StreamWriter
Implementa TextWriter para escribir los caracteres de
una secuencia en una codificación determinada.
StringReader
Implementa TextReader que lee en una cadena.
StringWriter
Escribe información en una cadena. La información se
almacena en el StringBuilder subyacente.
TextReader
Representa un lector que puede leer una serie secuencial
de caracteres.
TextWriter
Representa un sistema de escritura que puede escribir
una serie secuencial de caracteres. Esta clase es
abstracta.
•
Estructuras
Estructura
Descripción
WaitForChangedResul Contiene información acerca del cambio
t
producido.
Delegados
Delegado
Descripción
ErrorEventHandler
Representa el método que controlará el evento Error de un objeto
FileSystemWatcher.
FileSystemEventHandle Representa el método que controlará el evento Changed, Created
r
o Deleted de una clase FileSystemWatcher.
RenamedEventHandler Representa el método que controlará el evento Renamed de una
clase FileSystemWatcher.
•
Enumeraciones
Enumeración
Descripción
FileAccess
Define constantes para accesos de lectura, de escritura o de lectura y
escritura a un archivo.
FileAttributes
Proporciona atributos para archivos y directorios.
FileMode
Especifica cómo debe abrir un archivo el sistema operativo.
FileShare
Contiene constantes para controlar el tipo de acceso que otros
Prof.: Justo Sáez Arenas
_ Dpto Informática _
19
Desarrollo de Aplicaciones Informáticas
Visual Basic .NET – Archivos
IES Quevedo
FileStreams puedan tener al mismo archivo.
NotifyFilters
Especifica los cambios que se van a buscar en un archivo o una
carpeta.
SeekOrigin
Proporciona los campos que representan puntos de referencia en las
secuencias para realizar búsquedas seek.
WatcherChangeTypesCambios que pueden producirse en un archivo o directorio.
4. Bibliografía.
-
“Visual Basic.Net. La biblia”, E. Petroustsos. Ed Anaya.
-
Ayuda del entorno Visual Studio .Net. “Acceso a archivos con Visual Basic .NET
-
http://www.microsoft.com/spanish/msdn/articulos/archivo/040402/voices/vbtchvbafileiowhitepaper.asp
-
VB.Net. Ceballos. Cap. 10, pag. 231.
-
Michael Halvorson. “VB.Net. Aprenda Ya”, pág, 339.
Prof.: Justo Sáez Arenas
_ Dpto Informática _
20
Descargar