File System Object en ASP

  • Por
  • ASP
Explicamos para qué podemos utilizar el sistema de ficheros desde ASP. Vemos el objeto con todos sus métodos y propiedades.
En ASP tenemos disponible un objeto para realizar accesos al sistema de archivos del servidor. Su nombre es FileSystemObject (FSO) y será necesario conocerlo para realizar acciones típicas en el ámbito de la programación como la lectura o escritura de ficheros.

A la hora de trabajar con el sistema de archivos dispondremos de una serie de objetos dependientes de alguna manera del FSO y que podremos utilizar para llegar a cualquier punto del sistema de archivos. Entre esos objetos están las unidades, los directorios o los propios ficheros y están organizados de manera que se pueda ir pasando de uno a otro hasta que encontremos el que necesitemos.

Por ejemplo, para llegar a un archivo con ruta c:\html\prueba.html, podríamos empezar extrayendo del FSO la unidad C como un objeto Drive (unidad). Luego podemos extraer el listado de directorios completo de la raíz de la unidad, para quedarnos con el objeto folder correspondiente con el directorio HTML. Una vez allí ya tendremos disponibles los ficheros del directorio (objetos file), entre los que estará el que veníamos buscando, prueba.html. Aunque este recorrido pueda parecer confuso en un principio, iremos conociendo cada objeto hasta que podamos realizarlo fácilmente.

Nota: Los scripts relacionados con el FSO en algunas ocasiones pueden ser confundidos por programas nocivos o peligrosos por los sistemas antivirus. Por esta razón, en algunos casos, los scripts pueden no funcionar correctamente y sin mostrar ningún mensaje de error, simplemente se queda el navegador colgado sin mostrar el resultado de la página.

Lo que tendremos que hacer en estos casos y para ahorrarnos problemas es deshabilitar la función de bloqueo de scripts de nuestro antivirus. Tener en cuenta que esto puede ser un problema potencial si realmente nuestro sistema se encontraba con un virus. Además, tener en cuenta que los programas que trabajan con el FSO pueden ejecutar instrucciones peligrosas, como el borrado de ficheros o carpetas. En este caso deberemos prestar atención a que nuestros scripts estén bien escritos y no realicen acciones que puedan hacernos perder datos o archivos críticos del sistema.

Asimismo, para muchas de las acciones que nos permite realizar FSO, será necesario contar con los correspondientes permisos de escritura en los directorios que estemos trabajando.

El objeto FSO

En Visual Basic Script (VBScript) se crea con la siguiente instrucción:

set oFSO = server.createObject ("scripting.FileSystemObject")

Referencia: Se trata por encima el FSO en el artículo Lectura y escritura de archivos en ASP.
El objeto FSO dispone de los siguientes métodos y propiedades.

Propiedades

Drives
Nos retorna un array con las unidades disponibles en la máquina donde se ejecuta el script. Las unidades son a su vez objetos drive, que veremos más adelante.

Métodos

Los métodos del objeto FSO se utilizan para trabajar con distintos tipos de elementos del sistema de archivos del servidor: las unidades, las carpetas y los ficheros.

Métodos para tratar unidades

DriveExists (unidad)
Recibe la unidad que podría pertenecer a nuestro sistema de archivos y devuelve true si es verdad que pertenece y false si no existe esa unidad.

GetDrive (unidad)
Devuelve el objeto Drive de la unidad que ha recibido por parámetro. Parámetros posibles son "c", "c:" o "c:\".

GetDriveName (unidad)
Devuelve el nombre de la unidad indicada como parámetro. El parámetro que se espera es un string con la letra de la unidad y los dos puntos o una ruta absoluta a un archivo o directorio. No comprueba la existencia de la unidad, o la ruta introducida.

Métodos para carpetas

BuildPath (ruta_parcial, nombre)
Crea una ruta completa a un fichero a partir de la ruta_parcial indicada y el nombre de fichero.

CopyFolder (origen, destino, sobrescribe)
Copia la carpeta origen en la carpeta destino. Si sobrescribe es true, reemplaza los ficheros y si es false no (Da un error si la carpeta destino ya existe y sobrescribe es false.

CreateFolder (nombre)
Crea una carpeta con el nombre indicado. Si la carpeta estaba creada da un error.

DeleteFolder (nombre)
Borra la carpeta especificada como nombre, junto con todo su contenido.

FolderExists (nombre)
Devuelve true si la carpeta con el nombre indicado existe, false si no existe.

GetAbsolutePathName (ruta)
Construye y devuelve la ruta absoluta que tendría la ruta indicada por parámetro y la ruta donde está situado el script. Es decir, si la ruta del script es c:\inetpub\wwwroot y el parámetro indicado es "archivos", la ruta devuelta sería c:\inetpub\wwwroot\archivos

GetFolder (nombre)
Devuelve el objeto Folder (carpeta) asociado al nombre indicado por parámetro.

GetFolderName (ruta)
Devuelve el nombre del directorio padre del archivo o carpeta indicado como parámetro.

GetSpecialFolder(num)
Devuelve la carpeta especial de Windows correspondiente con estos valores de parámetro: 0 Directorio Windows, 1 Directorio System, 2 Directorio temporal.

MoveFolder (origen, destino)
Mueve la carpeta origen a destino. Dará un error si colocamos una carpeta destino que ya existe.

Métodos para archivos

CopyFile (origen, destino, sobrescribe)
Copia el archivo origen en destino. Si sobrescribe es true lo reemplaza y si es false no. El destino puede ser una carpeta (acabado en \) o un fichero.

CreateTextFile (nombre, sobrescribe, unicode)
Crea un archivo en nuestro sistema de ficheros y devuelve el objeto TextStream, que servirá luego para trabajar con él. Nombre indica la ruta, sobrescribe indica si se tiene se sobrescribir con otro creado previamente y unicode es un boleano que cuando vale true significa que el archivo se debe crear con juego de caracteres unicode.

DeleteFile (nombre, protegido)
Borra el archivo indicado como nombre. El parámetro protegido es opcional y sirve para indicar que se borre el archivo a pesar de que esté protegido contra escritura.

FileExists (nombre)
Devuelve true si el archivo indicado como nombre existe.

GetExtensionName (nombre)
Devuelve la extensión del archivo indicado como nombre, sólo lo que está después del último punto del archivo.

GetFile (nombre)
Devuelve el objeto archivo (File) especificado como nombre.

GetFileName (ruta)
Devuelve el nombre del fichero indicado en la ruta que recibe por parámetro. Si no se indica un fichero devuelve el nombre de la carpeta última.

GetTempName ()
Devuelve un nombre de archivo que se puede utilizar para nombrar un archivo que se va a utilizar temporalmente.

MoveFile (origen, destino)
Mueve el archivo indicado como origen a destino. Da un error si el archivo destino ya existe.

OpenTextFile (nombre, tipo_acceso, crear, formato)
Se abre un archivo de texto, indicado como nombre, para leer o escribir y nos devuelve el objeto TextStream para realizar las acciones sobre el fichero. Tipo_acceso es opcional , indica el tipo de acceso que vamos a realizar, por defecto se abre para lectura, ForReading (1), también podemos abrirlo para escritura ForWriting (2) y para añadir ForAppending (8). Con el parámetro crear, también opcional, se indica si se debe crear el fichero en caso de que no exista, por defecto no se crea. Por último, formato nos sirve para indicar el formato del fichero, ASCII es el predeterminado.

Nota: Muchos de estos métodos permiten utilizar comodines para referenciar uno o varios archivos o carpetas. Por ejemplo MoveFile() permite mover en una sentencia varios ficheros o DeleteFolder() permite borrar de una vez varios directorios.

A continuación veremos algunos ejercicios para aprender el manejo de FSO, en los que trabajamos con los métodos del objeto y su propiedad.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

roger

27/4/2004
No es en si comentario, si no mas bien una pregunta.
Al finalizar una sesion, tengo que borrar un conjunto de archivo, pero al agregarlo al global.asa, me marca un error de que no se puede realizar esta operacion en session_end y application_end como puedo hacer esto?

Su pagina ha sido para mi de mucha utilidad, gracias.

roger

27/4/2004
No es en si comentario, si no mas bien una pregunta.
Al finalizar una sesion, tengo que borrar un conjunto de archivo, pero al hacerlo en el global.asa, me marca un error de que no se puede realizar esta operacion en session_end y application_end como puedo hacer esto?

Su pagina ha sido para mi de mucha utilidad, gracias.

Maemi

09/9/2006
Muy buenos artículos. felicidades

ELX

12/9/2007
Este articulo esta muy bien. Pero, yo tengo el problema que al leer un archivo de texto quiero que existan algunos link (A HRef...) o incluya alguna imagen, es decir que reconozca odigo html, pero eso no sucede. Todo lo que este en el archivo de texto lo interpreta como texto y por supuesto lo escribe tal cual. El navegador no interpreta el codigo HTML que pueda incluir en el archivo de texto.
Alguna sugerencia?

flavio

15/2/2008
hola estoy creando una carpeta y logro hacerlo pero siempre que lo haga fuera del wwwroot. si trato de crearla ahi adentro me da error la pagina... alguien sabe la razon?? muchas gracias!