> Manuales > File System Object en 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.

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online Escu...

Manual