10 mayo, 2007

Manejo de archivos, carpetas y unidades mediante system.io

Una de las actividades comunes al desarrollar es tratar con archivos, por eso quiero escribir un poco de las facilidades que .net Framework nos proporciona.

Lo primero que debemos conocer es el namespace system.io, el cual nos proporciona una serie de clases para el manejo de archivos, carpetas y hasta unidades completas.

Podríamos decir que system.io se divide en dos tipos de clases, las de información (derivadas de filesysteminfo) y las de utilidades (file, directory y path)

Pero, veamos como se utilizan, empecemos con FileInfo, este nos permite ver información de un archivo.

Imports System.IO

Module Module1 Sub Main()

Dim Mi_archivo As New FileInfo("c:\windows\explorer.exe")

Console.WriteLine("Directorio = {0}", Mi_archivo.DirectoryName)

Console.WriteLine("Nombre = {0}", Mi_archivo.Name)

Console.WriteLine("Extensión = {0}", Mi_archivo.Extension)

Console.WriteLine("Fecha de creación = {0}", Mi_archivo.CreationTimeUtc)

Console.WriteLine("Fecha última modificación = {0}",

Mi_archivo.LastWriteTimeUtc)

Console.ReadKey()

End Sub

End Module

Pero, el fileinfo además de brindarnos información de un archivo nos permite realizar algunas operaciones con él.

Mi_archivo.CopyTo("c:\winres\explorer.res", True)

Mi_archivo.MoveTo("c:\carpeta\respaldo.bak")

Otras clases importantes son las siguientes

Directory_info

Permite manipular directorios

DriveInfo

Permite manipular unidades de disco (isReady, TotalSize, TotalFreeSpace)

Path

Permite manejar rutas de archivos de forma más eficiente que si las manejáramos como simples cadenas de texto

FileSystemWatcher

Permite monitorear cambios (Creación, modificación, renombrado, borrado) el sistema de archivos y directorios.

En el siguiente ejemplo podemos ver como listar los archivos de una carpeta específica.

Sub Main()

Dim Mi_directorio As DirectoryInfo = New DirectoryInfo("c:\windows")

For Each Mi_archivo As FileInfo In Mi_directorio.GetFiles()

Console.WriteLine("Archivo: {0}, Tamaño: {1} bytes", Mi_archivo.Name, Mi_archivo.Length)

Next

Console.ReadKey()

End Sub

1 comentario:

Anónimo dijo...

Muy exacto