Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
un directorio en
ASP .NET
Dos maneras distintas de acceder a carpetas y
archivos:
Interfaz System.Collection.IEnumerator y
Colecciones
File, Directory, FileInfo y DirectoryInfo de
System.IO
Fecha: 09/Abr/2005 (4 de Abril de 2005)
Autor: Emilio Prez Egido - Miliuco [emi@miliuco.net]
ASP .NET tiene varias formas de aceder a los archivos y subdirectorios contenidos en un
directorio. En este ejercicio se hace referencia a dos maneras diferentes de listar los archivos
existentes en una carpeta o directorio, ambas se basan en cdigo relativamente sencillo,
comprensible por programadores de nivel bsico / intermedio.
Una coleccin (Collection) es un tipo especial de matriz o array especialmente preparado para
unas tareas determinadas. Los objetos Collection se crean desde las clases e interfaces del
espacio de nombres System.Collections. Algunas interfaces tiles de Collections son:
En este ejercicio se usa la interfaz IEnumerator (que admite una iteracin simple a travs de una
coleccin) y el mtodo GetEnumerator (que devuelve un enumerador que puede iterar por una
coleccin). IEnumerator es la interfaz base de todos los enumeradores.
Los enumeradores slo permiten la lectura de datos de la coleccin y no se pueden utilizar para
modificar la coleccin (acceden a las matrices en modo de slo lectura).
Inicialmente, el enumerador se coloca delante del primer elemento de la coleccin y mediante
sus mtodos podemos movernos por la lista:
En el cdigo de ejemplo se observa cmo se crea un array o lista para contener los nombres de
los archivos del directorio pasado en una variable de cadena y tambin se crea un enumerador
que itera a lo largo de los elementos de la lista; se puede obtener fcilmente el nmero de
archivos del directorio contando el nmero de elementos de la lista (i = lista1.Length).
El objeto Response permite interaccionar servidor con cliente, su mtodo Write enva resultados
HTTP al navegador web cliente. Aqu lo utilizamos para ir enviando cdigo HTML que va
formateando una tabla cuyas celdas se irn rellenando con texto y resultados de la ejecucin de
cdigo VB, aprovechando para formatear el aspecto del documento HTML gracias a mltiples
elementos Response.Write:
El espacio de nombres System.IO contiene clases que facilitan el trabajo con archivos y
carpetas:
En este ejercicio se utilizan las clases FileInfo y DirectoryInfo junto a matrices para contener los
nombres de las carpetas o archivos, para poder mostrar al usuario un listado de archivos
contenidos en el directorio seleccionado y en los subdirectorios de primer nivel, de entre los que
componen el sitio web del que forma parte esta aplicacin. Es muy sencillo retocar el cdigo
para que muestre archivos de directorios locales del disco duro fuera de las carpetas que
componen el servidor web pero para ello hay que tener permisos de acceso a esas carpetas, por lo
que puede no funcionar sirviendo estas pginas desde Internet (el proveedor de los servicios tal
vez no lo permita).
La pgina aspx presenta al usuario un cuadro de texto en el que se introduce la ruta a una carpeta
del servidor web (incluido el directorio raz /) o a una carpeta del disco duro, teniendo en cuenta
que, ejecutada desde Internet, esta aplicacin intenta acceder a contenidos que, dependiendo de
la configuracin del servidor web, es posible que no sean accesibles por no tener permisos
suficientes para ello; es recomendable descargar la aplicacin a nuestro disco duro y probarla
desde ah.
Se necesitan variables (String para los nombres de archivos y carpetas y arrays para contener las
listas de archivos y carpetas y poder contarlos):
Dim archivo, carpeta As String 'para el nombre de archivos y
carpetas
Dim sArchivos(), sCarpetas() As String 'array con los nombres de
archivos y directorios
Dim a, b As Integer 'para llevar la cuenta del n de archivos
La propiedad text del cuadro de texto se pasa, en el cdigo Visual Basic, a una variable String
que ayuda a construir la ruta hacia el directorio usando Server.MapPath():
Por ltimo, se propone una manera diferente a la habitual para descargar el archivo comprimido
zip:
<A HREF="archivos.zip"></A>
System.IO
System.Collections
System
System.Web
System.Web.UI
System.Web.UI.WebControls
System.Web.UI.HtmlControls