Comment on page
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.
Constructor
Función |
Generales
Retorno | Función |
String | |
Boolean | |
Boolean | |
Boolean | |
Boolean | |
Boolean |
De path
Retorno | Función |
String | |
String | |
String | |
Boolean | |
Boolean | |
String | |
Boolean | |
String | |
String |
De operaciones con directorios
De ficheros del directorio
Retorno | Función |
Number | |
Boolean | |
Boolean | |
Boolean | load( StringList& aszNameFilters, Number nFilters = QDir::NoFilter, Number nSortFlags = QDir::NoSort ) |
void | |
Boolean | |
Boolean |
Flags de filtros
- FilterDirs = 0x001 Sólo directorios que cumplan el filtro
- FilterFiles = 0x002 Solo ficheros
- FilterDrives = 0x004 Lista de dispositivos (se ignora en Linux)
- FilterNoSymLinks = 0x008 No incluir en la lista los enlaces simbólicos (accesos directos)
- FilterAllEntries = FilterDirs | FilterFiles | FilterDrives Incluye en la lista directorios, ficheros, dispositivos
- FilterReadable = 0x010 Incluye los directorios o ficheros que tienen acceso de lectura
- FilterWritable = 0x020 Incluye los directorios o ficheros que tienen acceso de escritura
- FilterExecutable = 0x040 Incluye los ficheros que tienen acceso de ejecución
- FilterModified = 0x080 Incluye sólo los ficheros que han sido modificados (ignorado en Unix)
- FilterHidden = 0x100 Incluye los ficheros ocultos
- FilterSystem = 0x200 Incluye los ficheros del sistema
- FilterAllDirs = 0x400 Todos los directorios, sin aplicar filtros
- FilterCaseSensitive = 0x800 El filtro es sensible a mayúsculas y minúsculas
- FilterNoDotAndDotDot = 0x1000 No incluye en la lista las entradas "." y "..", directorios en curso y padre
- FilterNoDot = 0x2000 No incluye en la lista la entrada ".", el directorio en curso
- FilterNoDotDot = 0x4000 No incluye en la lista la entrada "..", el directorio padre
- FilterNone = -1 Sin filtro
Flags de ordenación
- SortName = 0x00 Ordenado por nombre
- SortTime = 0x01 Ordenado por fecha de última modificación
- SortSize = 0x02 Ordenado por tamaño
- SortUnsorted = 0x03 No ordenado
- SortDirsFirst = 0x04 Los directorios al principio, después los ficheros
- SortReversed = 0x08 Orden inverso
- SortIgnoreCase = 0x10 Ignorar mayúsculas
- SortDirsLast = 0x20 Los ficheros al principio, después los directorios
- SortLocaleAware = 0x40 Ordenado según la configuración local
- SortType = 0x80 Ordenado por extensión
- SortNone = -1 No ordenado por defecto
Crea una instancia de objeto de la clase VDir.
Parámetros:
- szFileName: nombre o path del fichero.
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 "".
Devuelve true si el directorio existe y false si no existe.
Devuelve true si el path es absoluto.
Devuelve true si el directorio es legible. Un valor false no garantiza que los ficheros no sean accesibles.
Devuelve true si el path es relativo. En Linux y Mac es relativo si el path no comienza por "/".
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().
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.
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.
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.
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.
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("..").
Devuelve el path de un fichero.
Parámetros:
- szFileName: nombre o path del fichero.
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.
Devuelve el path del directorio.
Devuelve el path de un fichero relativo al directorio.
Parámetros:
- szFileName: nombre o path del fichero.
Crear un directorio. Devuelve true si se ha podido crear el nuevo directorio.
Parámetros:
- szDirName: nombre o path del directorio.
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.
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.
Elimina un path (directorio y subdirectorios). Devuelve true si finaliza correctamente.
Parámetros:
- szDirPath: path del directorio.
Devuelve del nº de ficheros y directorios cargados con load().
Parámetros:
- nIndex: número de orden del fichero en la lista cargada de ficheros del directorio.
Devuelve true si el fichero existe.
Parámetros:
- szFilename: nombre o path del fichero.
Carga en el objeto la lista de ficheros y subdirectorio del directorio en curso.
Parámetros:
- nFilters: ver enum de flags de tipos de filtros. Los valores con combinables mediante el uso del operador bitwise or booleano "|".
- nSortFlags: ver enum de flags de tipos de ordenación. Los valores con combinables mediante el uso del operador bitwise or booleano "|".
Carga en el objeto la lista de ficheros y subdirectorio del directorio en curso.
Parámetros:
- szNameFilter: nombre del filtro.
- nFilters: ver enum de flags de tipos de filtros. Los valores con combinables mediante el uso del operador bitwise or booleano "|".
- nSortFlags: ver enum de flags de ordenación. Los valores con combinables mediante el uso del operador bitwise or booleano "|".
Refresca en el objeto directorio la lista de ficheros y subdirectorios.
Elimina un fichero o directorio. Devuelve true si finaliza correctamente.
Parámetros:
- szFilename: nombre o path del fichero.
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.
////////////////////////////////////////////////////////////
// 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" );
// --------------------------------------------------------------------------------
// 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 3yr ago