VDir

La clase VDir proporciona acceso a las estructuras de directorios y sus contenidos.

Un VDir se utiliza para manipular los nombres de sendas, acceso a la información sobre las sendas y los ficheros y manipular el sistema de archivos subyacente.

VDir usa "/" como un separador universal de directorios de la misma manera que "/" se utiliza como un separador de ruta en URLs. Si siempre utiliza “/” como separador de directorio, VDir traducirá las sendas para cumplir con el sistema operativo subyacente.

Un VDir puede apuntar a un directorio utilizando una ruta absoluta o relativa. Las rutas absolutas comienzan con el separador de directorio (opcionalmente precedido por una especificación de unidad en Windows). Los nombres relativos de archivo comienzan con un nombre de directorio o un nombre de archivo.

Indice de funciones

Constructor

VDir( String Path )

Generales

String dirName()

Boolean exists()

Boolean isAbsolute()

Boolean isReadable()

Boolean isRelative()

Boolean isRoot()

De path

String absoluteFilePath( String szFileName )

String absolutePath()

String canonicalPath()

Boolean cd( String szDirName )

Boolean cdUp()

String filePath( String szFileName )

Boolean makeAbsolute()

String path()

String relativeFilePath( String szFileName )

De operaciones con directorios

Boolean mkdir( String szDirName )

Boolean mkpath( String szDirPath )

Boolean rmdir( String szDirName )

Boolean rmpath( String szDirPath )

De ficheros del directorio

Number count()

VFileInfo entryAt( Number nIndex )

Boolean exists( String Path )

Boolean load( Number nFilters = QDir::NoFilter, Number nSortFlags = QDir::NoSort )

Boolean load( StringList& aszNameFilters, Number nFilters = QDir::NoFilter, Number nSortFlags = QDir::NoSort )

void refresh()

Boolean remove( String Path )

Boolean rename( String szOldName, String szNewName )

Documentación de funciones

Constructor

VDir( String Path )

Crea una instancia de objeto de la clase VDir.

Parámetros:

  • szFileName: nombre o path del fichero.

Funciones generales

String dirName()

Devuelve el nombre del directorio, por ejemplo "vbase" . No se debe confundir con el path "/instancias/vbase". Si el directorio no tiene nombre, por ejemplo el raíz devuelve "".

Boolean exists()

Devuelve true si el directorio existe y false si no existe.

Boolean isAbsolute()

Devuelve true si el path es absoluto.

Boolean isReadable()

Devuelve true si el directorio es legible. Un valor false no garantiza que los ficheros no sean accesibles.

Boolean isRelative()

Devuelve true si el path es relativo. En Linux y Mac es relativo si el path no comienza por "/".

Boolean isRoot()

Devuelve true si es el directorio raíz. Si es un enlace simbólico del directorio raíz devolverá false. Para enlaces simbólicos usar la función canonicalPath().

Funciones de path

String absoluteFilePath( String szFileName )

Devuelve el path absoluto de un fichero en un directo. No se verifica si el fichero existe en el directorio. No se elimina del path los separadores múltiples o "." o ".." redundantes.

Parámetros:

  • szFileName = Nombre o path del fichero.

String absolutePath()

Devuelve el path absoluto (empieza con "/" o con la letra del dispositivo). Puede contener enlaces simbólicos pero no "." o ".." redundates o múltiples separadores.

String canonicalPath()

Devuelve el path canonica, sin enlaces simbólicos ni "." o ".." redundantes. Si el sistema no tiene enlaces simbólicos la función equivale a absolutePath(). Si el canonical path no existe la función no devuelve nada.

Boolean cd( String szDirName )

Cambia el directorio del objeto VDir. Devuelve true si el directorio existe y es legible, en caso contrario false. El cambio de directorio no se produce si devuelve false. Usar cd("..") es equivalente a usar la función cdUp().

Parámetros:

  • szDirName: nombre o path del directorio.

Boolean cdUp()

Cambia el directorio del objeto VDir al directorio padre. Devuelve true si el directorio existe y es legible, en caso contrario false. El cambio de directorio no se produce si devuelve false. Usar cdUp() es equivalente a usar la función cd("..").

String filePath( String szFileName )

Devuelve el path de un fichero.

Parámetros:

  • szFileName: nombre o path del fichero.

Boolean makeAbsolute()

Convierte el path del directorio en un path absoluto. Si ya es absoluto no hace nada. Devuelve true si la conversión se ha realizado.

String path()

Devuelve el path del directorio.

String relativeFilePath( String szFileName )

Devuelve el path de un fichero relativo al directorio.

Parámetros:

  • szFileName: nombre o path del fichero.

Funciones de operaciones con directorios

Boolean mkdir( String szDirName )

Crear un directorio. Devuelve true si se ha podido crear el nuevo directorio.

Parámetros:

  • szDirName: nombre o path del directorio.

Boolean mkpath( String szDirPath )

Crear los directorios inexistentes de un path. Devuelve true si ha podido crear todo el path del directorio. Se crean todos los subdirectorios necesario para crear el directorio.

Parámetros:

  • szDirPath: path del directorio.

Boolean rmdir( String szDirName )

Elimina un directorio. El directorio debe estar vacío para poder eliminarlo. Devuelve true sin finaliza correctamente.

Parámetros:

  • szDirName: nombre o path del directorio.

Boolean rmpath( String szDirPath )

Elimina un path (directorio y subdirectorios). Devuelve true si finaliza correctamente.

Parámetros:

  • szDirPath: path del directorio.

Funciones de ficheros del directorio

Number count()

Devuelve del nº de ficheros y directorios cargados con load().

VFileInfo entryAt( Number nIndex )

Devuelve un objeto VFileInfo correspondiente al nº de elemento de la lista.

Parámetros:

  • nIndex: número de orden del fichero en la lista cargada de ficheros del directorio.

Boolean exists( String Path )

Devuelve true si el fichero existe.

Parámetros:

  • szFilename: nombre o path del fichero.

Boolean load( Number nFilters = QDir::NoFilter, Number nSortFlags = QDir::NoSort )

Carga en el objeto la lista de ficheros y subdirectorio del directorio en curso.

Parámetros:

Boolean load( StringList& aszNameFilters, Number nFilters = QDir::NoFilter, Number nSortFlags = QDir::NoSort )

Carga en el objeto la lista de ficheros y subdirectorio del directorio en curso.

Parámetros:

void refresh()

Refresca en el objeto directorio la lista de ficheros y subdirectorios.

Boolean remove( String Path )

Elimina un fichero o directorio. Devuelve true si finaliza correctamente.

Parámetros:

  • szFilename: nombre o path del fichero.

Boolean rename( String szOldName, String szNewName )

Renombra un fichero o directorio. Devuelve true si finaliza correctamente.

Parámetros:

  • szOldname: nombre o path del del fichero a cambiar.

  • szNename: nombre o path del nuevo para el fichero.

Ejemplos

1. Ejemplo de uso de las funciones de la clase VDir

////////////////////////////////////////////////////////////
// Ejemplo de las funciones de la clase VDir

// Para poder usar la clase VDir y sus funciones hay que importarla primero
importClass( "VDir" );

// Lo primero que hay que hacer es crear un objeto VDir con un directorio o vacío
var dir = new VDir();

// En caso de crear el objeto VDir sin un directorio es necesario asignar un path
dir.cd( "/Instancias/001" );
alert( "Se ha cambiado la senda del objeto directorio a " + dir.path() )

// Convertir el path del directorio en path absoluto
if ( dir.makeAbsolute() )
    alert( dir.path() + " ya era un path absoluto" );

// Cargar la lista de ficheros y directorios
dir.load();

alert( "¿Existe el directorio " + dir.path() + "? " + dir.exists() + "\n" + 
        "¿El directorio es el raíz? " + dir.isRoot() + "\n" + 
        "¿El directorio es legible? " + dir.isReadable() + "\n" + 
        "¿El directorio es absoluto? " + dir.isAbsolute() + "\n" + 
        "¿El directorio es relativo? " + dir.isRelative() + "\n" + 
        "Este directorio tiene " + dir.count() + " ficheros y directorios.");

// Se crea un directorio
bOk = dir.mkdir( "/" + "new" );

if ( bOk )
    // Se elimina el directorio
    dir.rmdir( "/" + "new" );

// Se crean los directorios y subdirectorios necesarios
bOk = dir.mkpath( "/backup/files/txt" );

if ( bOk )
    // Se elimina el path completo
    dir.rmpath( "/backup/files/txt" );

2. Lee y devuelve los ficheros contenidos en un directorio

// --------------------------------------------------------------------------------
// Lee el directorio y devuelve los ficheros contenidos
// -----------------------------------------------------------

importClass("VDir");

// Recibimos la senda en una variable local al proceso
var senda = theRoot.varToString( "SENDA" );
var ficheros = "";

// Creamos el nuevo directorio
var dir = new VDir();

// Nos posicionamos en el directorio
if ( dir.cd( senda ) )
{
    // Preparamos el array de filtros a aplicar
    var filtros = [];
    filtros.push( "*.csv" );

    // Cargamos los ficheros del directorio
    if ( dir.load( filtros, VDir.FilterFiles, VDir.SortName ) )
    {
        // Recorremos la lista de ficheros y los concatenamos separados por "|"
        for ( var numFichero = 0; numFichero < dir.count(); numFichero++ )
        {
            ficheros += dir.entryAt( numFichero ).filePath() + "|";
        };
    };
};

// Devolvemos la lista de ficheros del directorio en una variable local
theRoot.setVar( "FICHEROS", ficheros );

Última actualización