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