El método Server.CreateObject
Server.CreateObject("Scripting.FileSystemObject")
Continuando con los objetos que pueden crearse con Server.CreateObject() veremos ahora los de acceso a la estructura de archivos de un disco, es decir, a sus directorios y ficheros. Para poder acceder a todos ellos, previamente habrá que crear un objeto FileSystem y a continuación el objeto File o Folder según se trate de ficheros o directorios (ya existentes, por supuesto).
<%
Set FS = Server.CreateObject("Scripting.FileSystemObject")
Set Fichero = FS.GetFile("C:\ASP\texto.txt")
Set Directorio = FS.GetFolder("C:\ASP")
%>
- FS es un objeto FileSystem que permite acceder al sistema de ficheros del servidor.
- Fichero es un objeto File que permite acceder a las propiedades de un fichero de texto llamado texto.txt.
- Directorio es un objeto Folder que permite acceder a las propiedades de un directorio llamado ASP.
Veamos las propiedades, que pueden ser de lectura y escritura (RW) o de sólo lectura (R), y donde Objeto puede ser Fichero o Directorio, salvo que se indique concretamente.
- Objeto.Attributes [=nuevos] Establece nuevos o muestra los atributos del objeto. Los valores y significados de los atributos son los siguientes, pudiendo utilizarse indistintamente el nombre de las constantes o su valor numérico:
- Normal = 0 Archivo normal. No se establecen atributos.
- ReadOnly = 1 Archivo de sólo lectura. RW
- Hidden = 2 Archivo oculto. RW
- System = 4 Archivo de sistema. RW
- Volume = 8 Etiqueta de volumen de la unidad de disco. R
- Directory = 16 Carpeta o directorio. R
- Archive = 32 El archivo se ha modificado desde la última copia de seguridad. RW
- Alias = 64 Vínculo o acceso directo. R
- compressed = 128 Archivo comprimido. R
- Objeto.DateCreated Devuelve la fecha y hora en la que se creó el objeto. R
- Objeto.DateLastAccessed Devuelve la fecha y hora en la que se tuvo acceso por última vez al objeto. R
- Objeto.DateLastModified Devuelve la fecha y hora en la que se modificó por última vez el objeto. R
- Objeto.Drive Devuelve la letra de unidad del disco en el que reside el objeto. R
- Objeto.Name [= nuevonombre] Establece nuevo o devuelve el nombre de un archivo o una carpeta. RW
- Objeto.ParentFolder Devuelve el objeto Directorio que es el directorio primario del objeto especificado. R
- Objeto.Path Devuelve la ruta de acceso del objeto especificado. R
- Objeto.ShortName Devuelve el nombre corto (8.3), utilizado por los programas DOS, del objeto. R
- Objeto.ShortPath Devuelve la ruta corta (8.3), utilizado por los programas DOS, del objeto. R
- Objeto.Size Para los archivos, devuelve el tamaño en bytes del archivo especificado. Para los directorios, devuelve el tamaño en bytes de todos los archivos y subdirectorios que estén contenidos en el directorio. R
- Objeto.Type Devuelve información acerca del tipo de un archivo o directorio. Por ejemplo, para los archivos que terminan en .GIF, se devuelve "Imagen GIF". Para un directorio muestra "Carpeta de archivos". R
- Directorio.Files Devuelve una colección Files que consta de todos los objetos File (Fichero) contenidos en el directorio especificado, incluyendo aquellos que tienen establecidos los atributos de archivo oculto y de sistema. Puede obtenerse por medio de un bucle For Each .. in .. Next, típico.
- Directorio.SubFolders Devuelve una colección Folders que consta de todos los objetos Folder (Directorio) contenidos en el directorio especificado, incluyendo aquellos que tienen establecidos los atributos de oculto y de sistema. Puede obtenerse por medio de un bucle For Each .. in .. Next, típico.
- Directorio.IsRootFolder Devuelve True si el directorio especificado es el directorio raiz; False si no lo es.
Y a continuación veamos los métodos:
- Objeto.Copy destino[, sobrescribir] Copia un directorio o fichero especificado desde una posición en otra. El parámetro opcional sobreescribir puede tener dos valores: True (por defecto si se omite) si se desea sobrescribir los ficheros o directorios existentes en destino; False si no se van a sobrescribir. Al escribir la ruta de destino no se permiten caracteres comodín.
- Objeto.Delete opcion Elimina un directorio o fichero especificado. El parámetro opcion puede tener dos valores: True si se desea eliminar los ficheros o directorios con el atributo sólo lectura establecido; False (por defecto si se omite) si no se van a eliminar.
- Objeto.Move destino Mueve un directorio o fichero especificado desde una posición a otra. Al escribir la ruta de destino no se permiten caracteres comodín.
En todos los casos se cerrarán todos los objetos creados en orden inverso a como fueron abiertos:
<%
Fichero.Close
Set Fichero = Nothing
Directorio.Close
Set Directorio = Nothing
FS.Close
Set FS = Nothing
%>
Estos objetos, juntos con sus propiedades y métodos, no tienen mucha utilidad en programas que se ejecuten en el servidor, tal vez salvo aplicaciones exclusivamente usadas en red local (intranet) y con las debidas precauciones. No obstante, es posible utilizarlos en scripts que se ejecuten en el cliente, en cuyo caso tienen más sentido. El problema es que el VBScript solamente es interpretado por los navegadores Internet Explorer de Microsoft. A decisión del programador queda de nuevo decidir para qué navegador escribe la aplicación.
Todos estos objetos tienen equivalencia también en JavaScript, que es interpretado por casi todos los navegadores, incluido el IE. Si te decides por esta solución, prueba cuidadosamente el código con distintas versiones de los navegadores, ya que no todas las expresiones JavaScript son soportadas por igual.
Este asunto de las versiones de navegador, representa una de los problemas de más dificil solución para los programadores de aplicaciones internet. En efecto, nada hay más frustrante para un posible cliente, que enfrentarse a una aplicación que se comporta de forma impredecible, y que falla estrepitosamente debido a que su navegador no es el que la aplicación espera. Normalmente, esto es un cliente perdido.