En esta página

QDir Class

La clase QDir proporciona acceso a estructuras de directorios y a su contenido. Más...

Cabecera: #include <QDir>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Esta clase es igual-comparable.

Nota: Todas las funciones de esta clase son reentrantes.

Tipos públicos

enum Filter { Dirs, AllDirs, Files, Drives, NoSymLinks, …, CaseSensitive }
flags Filters
enum SortFlag { Name, Time, Size, Type, Unsorted, …, LocaleAware }
flags SortFlags

Funciones públicas

QDir(const QString &path = QString())
(since 6.0) QDir(const std::filesystem::path &path)
QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)
(since 6.0) QDir(const std::filesystem::path &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)
QDir(const QDir &dir)
~QDir()
QString absoluteFilePath(const QString &fileName) const
QString absolutePath() const
QString canonicalPath() const
bool cd(const QString &dirName)
bool cdUp()
qsizetype count() const
QString dirName() const
QFileInfoList entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QFileInfoList entryInfoList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QStringList entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QStringList entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
bool exists(const QString &name) const
bool exists() const
QString filePath(const QString &fileName) const
(since 6.0) std::filesystem::path filesystemAbsolutePath() const
(since 6.0) std::filesystem::path filesystemCanonicalPath() const
(since 6.0) std::filesystem::path filesystemPath() const
QDir::Filters filter() const
bool isAbsolute() const
bool isEmpty(QDir::Filters filters = Filters(AllEntries | NoDotAndDotDot)) const
bool isReadable() const
bool isRelative() const
bool isRoot() const
bool makeAbsolute()
bool mkdir(const QString &dirName, std::optional<QFileDevice::Permissions> permissions = std::nullopt) const
bool mkpath(const QString &dirPath, std::optional<QFileDevice::Permissions> permissions = std::nullopt) const
QStringList nameFilters() const
QString path() const
void refresh() const
QString relativeFilePath(const QString &fileName) const
bool remove(const QString &fileName)
bool removeRecursively()
bool rename(const QString &oldName, const QString &newName)
bool rmdir(const QString &dirName) const
bool rmpath(const QString &dirPath) const
void setFilter(QDir::Filters filters)
void setNameFilters(const QStringList &nameFilters)
void setPath(const QString &path)
(since 6.0) void setPath(const std::filesystem::path &path)
void setSorting(QDir::SortFlags sort)
QDir::SortFlags sorting() const
void swap(QDir &other)
QDir &operator=(QDir &&other)
QDir &operator=(const QDir &dir)
QString operator[](qsizetype pos) const

Miembros públicos estáticos

void addSearchPath(const QString &prefix, const QString &path)
(since 6.0) void addSearchPath(const QString &prefix, const std::filesystem::path &path)
QString cleanPath(const QString &path)
QDir current()
QString currentPath()
QFileInfoList drives()
QString fromNativeSeparators(const QString &pathName)
QDir home()
QString homePath()
bool isAbsolutePath(const QString &path)
bool isRelativePath(const QString &path)
QChar listSeparator()
bool match(const QString &filter, const QString &fileName)
bool match(const QStringList &filters, const QString &fileName)
QDir root()
QString rootPath()
QStringList searchPaths(const QString &prefix)
QChar separator()
bool setCurrent(const QString &path)
void setSearchPaths(const QString &prefix, const QStringList &searchPaths)
QDir temp()
QString tempPath()
QString toNativeSeparators(const QString &pathName)
bool operator!=(const QDir &lhs, const QDir &rhs)
bool operator==(const QDir &lhs, const QDir &rhs)

Descripción detallada

Un QDir se utiliza para manipular nombres de rutas, acceder a información relativa a rutas y archivos, y manipular el sistema de archivos subyacente. También puede usarse para acceder al sistema de recursos de Qt.

Qt usa "/" como separador universal de directorios de la misma forma que "/" se usa como separador de rutas en las URLs. Si siempre usas "/" como separador de directorio, Qt traducirá tus rutas para que se ajusten al sistema operativo subyacente.

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

Ejemplos de rutas absolutas:

QDir("/home/user/Documents");
QDir("C:/Users");

En Windows, el segundo ejemplo anterior se traducirá a C:\Users cuando se utilice para acceder a los archivos.

Ejemplos de rutas relativas:

QDir("images/landscape.png");

Puede utilizar las funciones isRelative() o isAbsolute() para comprobar si un QDir utiliza una ruta de archivo relativa o absoluta. Llama a makeAbsolute() para convertir un QDir relativo en uno absoluto.

Nota: Las rutas que comienzan con dos puntos (:) siempre se consideran absolutas, ya que denotan un QResource.

Se puede obtener la ruta de un directorio con la función path(), y establecer una nueva ruta con la función setPath(). La ruta absoluta a un directorio se encuentra llamando a absolutePath().

El nombre de un directorio se encuentra utilizando la función dirName(). Normalmente devuelve el último elemento de la ruta absoluta que especifica la ubicación del directorio. Sin embargo, también puede devolver "." si QDir representa el directorio actual.

QDir("Documents/Letters/Applications").dirName(); // "Applications"
QDir().dirName();                                 // "."

La ruta de un directorio también puede modificarse con las funciones cd() y cdUp(), que funcionan como los conocidos comandos del shell. Cuando se llama a cd() con el nombre de un directorio existente, el objeto QDir cambia de directorio para que represente a ese directorio en su lugar. La función cdUp() cambia el directorio del objeto QDir para que haga referencia a su directorio padre; es decir, cd("..") es equivalente a cdUp().

Los directorios pueden crearse con mkdir(), renombrarse con rename() y eliminarse con rmdir().

Puede comprobar la presencia de un directorio con un nombre determinado utilizando exists(), y las propiedades de un directorio pueden comprobarse con isReadable(), isAbsolute(), isRelative() y isRoot().

La función refresh() vuelve a leer los datos del directorio desde el disco.

Archivos y contenido de directorios

Los directorios contienen una serie de entradas que representan archivos, directorios y enlaces simbólicos. count () devuelve el número de entradas de un directorio. Se puede obtener una lista de cadenas con los nombres de todas las entradas de un directorio con entryList(). Si necesita información sobre cada entrada, utilice entryInfoList() para obtener una lista de objetos QFileInfo.

Las rutas a archivos y directorios dentro de un directorio pueden construirse utilizando filePath() y absoluteFilePath(). La función filePath() devuelve una ruta al archivo o directorio especificado relativa a la ruta del objeto QDir; absoluteFilePath() devuelve una ruta absoluta al archivo o directorio especificado. Ninguna de estas funciones comprueba la existencia de ficheros o directorios; sólo construyen rutas.

QDir directory("Documents/Letters");
QString path = directory.filePath("contents.txt");
QString absolutePath = directory.absoluteFilePath("contents.txt");

Los ficheros pueden eliminarse utilizando la función remove(). Los directorios no pueden eliminarse del mismo modo que los ficheros; utilice rmdir() para eliminarlos.

Es posible reducir el número de entradas devueltas por entryList() y entryInfoList() aplicando filtros a un objeto QDir. Puede aplicar un filtro de nombre para especificar un patrón con comodines que los nombres de archivo deben coincidir, un filtro de atributo que selecciona propiedades de las entradas y puede distinguir entre archivos y directorios, y un orden de clasificación.

Los filtros de nombres son listas de cadenas que se pasan a setNameFilters(). Los filtros de atributos consisten en una combinación O a nivel de bits de filtros, y se especifican al llamar a setFilter(). El orden de clasificación se especifica utilizando setSorting() con una combinación O a nivel de bits de SortFlags.

Puede comprobar si un nombre de archivo coincide con un filtro utilizando la función match().

Los indicadores de filtro y orden de clasificación también se pueden especificar al llamar a entryList() y entryInfoList() para anular el comportamiento definido previamente.

El directorio actual y otras rutas especiales

El acceso a algunos directorios comunes se realiza mediante una serie de funciones estáticas que devuelven objetos QDir. También hay funciones correspondientes que devuelven cadenas:

QDirQStringValor de retorno
current()currentPath()El directorio de trabajo de la aplicación
home()homePath()El directorio personal del usuario
root()rootPath()El directorio raíz
temp()tempPath()El directorio temporal del sistema

La función estática setCurrent() también puede utilizarse para establecer el directorio de trabajo de la aplicación.

Si desea encontrar el directorio que contiene el ejecutable de la aplicación, consulte QCoreApplication::applicationDirPath().

La función estática drives() proporciona una lista de directorios raíz para cada dispositivo que contenga un sistema de archivos. En sistemas Unix devuelve una lista que contiene un único directorio raíz "/"; en Windows la lista suele contener C:/, y posiblemente otras letras de unidad como D:/, dependiendo de la configuración del sistema del usuario.

Manipulación de rutas y cadenas

Las rutas que contienen elementos "." que hacen referencia al directorio actual en ese punto de la ruta, elementos ".." que hacen referencia al directorio padre y enlaces simbólicos pueden reducirse a una forma canónica utilizando la función canonicalPath().

Las rutas también pueden simplificarse utilizando cleanPath() para eliminar los elementos "/" y ".." redundantes.

A veces es necesario poder mostrar una ruta en la representación nativa para la plataforma del usuario. La función estática toNativeSeparators() devuelve una copia de la ruta especificada en la que cada separador de directorio se sustituye por el separador apropiado para el sistema operativo subyacente.

Ejemplos

Comprobar si existe un directorio:

QDir dir("ejemplo");if (!dir.existe())    qWarning("Cannot find the example directory");

(También podríamos utilizar una de las funciones estáticas de conveniencia QFileInfo::exists() o QFile::exists().)

Recorrer directorios y leer un archivo:

QDir dir = QDir::root(); // "/"if (!dir.cd("tmp")) { // "/tmp"    qWarning("Cannot find the \"/tmp\" directory");
} else { QFile file(dir.filePath("ex1.txt")); // "/tmp/ex1.txt" if (!file.open(QIODevice::LecturaEscritura))        qWarning("Cannot create the file %s", qPrintable(file.fileName()));
}

Programa que lista todos los ficheros del directorio actual (excluyendo los enlaces simbólicos), ordenados por tamaño, el más pequeño primero:

#include <QDir>
#include <iostream>
#include <QCoreApplication>

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
    QDir dir;
    dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
    dir.setSorting(QDir::Size | QDir::Reversed);

    QFileInfoList list = dir.entryInfoList();
    std::cout << "     Bytes Filename" << std::endl;
    for (int i = 0; i < list.size(); ++i) {
        QFileInfo fileInfo = list.at(i);
        std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10)
                                                .arg(fileInfo.fileName()));
        std::cout << std::endl;
    }
    return 0;
}

Problemas específicos de la plataforma

En Android, se aplican algunas limitaciones al tratar con URIs de contenido:

Véase también QFileInfo, QFile, QFileDialog, QCoreApplication::applicationDirPath(), y Fetch More Example.

Documentación de tipos de miembros

enum QDir::Filtro
flags QDir::Filtros

Este enum describe las opciones de filtrado disponibles para QDir; por ejemplo, para entryList() y entryInfoList(). El valor del filtro se especifica combinando valores de la siguiente lista mediante el operador OR a nivel de bits:

ConstanteValorDescripción
QDir::Dirs0x001Lista los directorios que coinciden con los filtros.
QDir::AllDirs0x400Lista todos los directorios; es decir, no aplica los filtros a los nombres de directorio.
QDir::Files0x002Listar ficheros.
QDir::Drives0x004Enumerar las unidades de disco (ignorado en Unix).
QDir::NoSymLinks0x008No listar enlaces simbólicos (ignorado por sistemas operativos que no soportan enlaces simbólicos).
QDir::NoDotAndDotDotNoDot | NoDotDotNo listar las entradas especiales "." y "..".
QDir::NoDot0x2000No listar la entrada especial ".".
QDir::NoDotDot0x4000No listar la entrada especial "..".
QDir::AllEntriesDirs | Files | DrivesListar directorios, ficheros, unidades y enlaces simbólicos (no lista los enlaces simbólicos rotos a menos que se especifique Sistema).
QDir::Readable0x010Enumera los archivos para los que la aplicación tiene acceso de lectura. El valor Readable debe combinarse con Dirs o Files.
QDir::Writable0x020Lista de archivos para los que la aplicación tiene acceso de escritura. El valor Writable debe combinarse con Dirs o Files.
QDir::Executable0x040Lista de archivos para los que la aplicación tiene acceso de ejecución. El valor Executable debe combinarse con Dirs o Files.
QDir::Hidden0x100Lista de archivos ocultos (en Unix, los archivos que empiezan por ".").
QDir::System0x200Lista los archivos del sistema (en Unix, se incluyen los archivos FIFO, sockets y dispositivos; en Windows, se incluyen los archivos .lnk ).
QDir::CaseSensitive0x800El filtro debe distinguir entre mayúsculas y minúsculas.

Las funciones que utilizan los valores de la enum Filter para filtrar listas de archivos y directorios incluirán enlaces simbólicos a archivos y directorios a menos que establezca el valor NoSymLinks.

Un QDir construido por defecto no filtrará los archivos basándose en sus permisos, por lo que entryList() y entryInfoList() devolverán todos los archivos que sean legibles, escribibles, ejecutables o cualquier combinación de los tres. Esto hace que el valor por defecto sea fácil de escribir, y al mismo tiempo útil.

Por ejemplo, establecer las banderas Readable, Writable, y Files permite listar todos los ficheros para los que la aplicación tiene acceso de lectura, escritura o ambos. Si las banderas Dirs y Drives también se incluyen en esta combinación, entonces todas las unidades, directorios, todos los archivos que la aplicación puede leer, escribir o ejecutar, y los enlaces simbólicos a dichos archivos/directorios pueden ser listados.

Para recuperar los permisos de un directorio, utilice la función entryInfoList() para obtener los objetos QFileInfo asociados y, a continuación, utilice QFileInfo::permissions() para obtener los permisos y la propiedad de cada archivo.

El tipo Filters es un typedef para QFlags<Filter>. Almacena una combinación OR de valores Filter.

enum QDir::SortFlag
flags QDir::SortFlags

Este enum describe las opciones de ordenación disponibles para QDir, por ejemplo para entryList() y entryInfoList(). El valor de ordenación se especifica combinando los valores de la siguiente lista:

ConstanteValorDescripción
QDir::Name0x00Ordenar por nombre.
QDir::Time0x01Ordenar por hora (hora de modificación).
QDir::Size0x02Ordenar por tamaño de archivo.
QDir::Type0x80Ordenar por tipo de archivo (extensión).
QDir::Unsorted0x03No ordenar.
QDir::NoSort-1No ordenar por defecto.
QDir::DirsFirst0x04Poner primero los directorios, luego los ficheros.
QDir::DirsLast0x20Poner primero los ficheros y después los directorios.
QDir::Reversed0x08Invertir el orden.
QDir::IgnoreCase0x10No distingue entre mayúsculas y minúsculas.
QDir::LocaleAware0x40Ordenar los elementos según la configuración regional actual.

Sólo puede especificar una de las cuatro primeras opciones.

Si especifica tanto DirsFirst como Reversed, los directorios se seguirán poniendo primero, pero en orden inverso; los ficheros se listarán después de los directorios, de nuevo en orden inverso.

El tipo SortFlags es un typedef para QFlags<SortFlag>. Almacena una combinación OR de valores SortFlag.

Documentación de las funciones miembro

QDir::QDir(const QString &path = QString())

Construye un QDir apuntando al directorio dado path. Si path está vacío se utiliza el directorio de trabajo del programa, (".").

Véase también currentPath().

[since 6.0] QDir::QDir(const std::filesystem::path &path)

Construye un QDir apuntando al directorio dado path. Si path está vacío se utiliza el directorio de trabajo del programa, (".").

Esta función se introdujo en Qt 6.0.

Véase también currentPath().

QDir::QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)

Construye un QDir con la ruta path, que filtra sus entradas por nombre usando nameFilter y por atributos usando filters. También ordena los nombres usando sort.

Por defecto nameFilter es una cadena vacía, que no excluye nada; por defecto filters es AllEntries, que tampoco excluye nada. El valor por defecto sort es Name | IgnoreCase, es decir, ordena por nombre insensible a mayúsculas y minúsculas.

Si path es una cadena vacía, QDir utiliza "." (el directorio actual). Si nameFilter es una cadena vacía, QDir utiliza el filtro de nombres "*" (todos los archivos).

Nota: path no tiene por qué existir.

Véase también exists(), setPath(), setNameFilters(), setFilter() y setSorting().

[since 6.0] QDir::QDir(const std::filesystem::path &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)

Construye un QDir con la ruta path, que filtra sus entradas por nombre usando nameFilter y por atributos usando filters. También ordena los nombres usando sort.

Por defecto nameFilter es una cadena vacía, que no excluye nada; por defecto filters es AllEntries, que tampoco excluye nada. El valor por defecto sort es Name | IgnoreCase, es decir, ordena por nombre insensible a mayúsculas y minúsculas.

Si path está vacío, QDir utiliza "." (el directorio actual). Si nameFilter es una cadena vacía, QDir utiliza el filtro de nombres "*" (todos los archivos).

Nota: path no necesita existir.

Esta función se introdujo en Qt 6.0.

Véase también exists(), setPath(), setNameFilters(), setFilter(), y setSorting().

QDir::QDir(const QDir &dir)

Construye un objeto QDir que es una copia del objeto QDir para el directorio dir.

Véase también operator=().

[noexcept] QDir::~QDir()

Destruye el objeto QDir y libera sus recursos. Esto no tiene ningún efecto sobre el directorio subyacente en el sistema de archivos.

QString QDir::absoluteFilePath(const QString &fileName) const

Devuelve el nombre de la ruta absoluta de un archivo en el directorio. No comprueba si el fichero existe realmente en el directorio; pero véase exists(). Los separadores múltiples redundantes o los directorios "." y ".." en fileName no se eliminan (véase cleanPath()).

Véase también relativeFilePath(), filePath() y canonicalPath().

QString QDir::absolutePath() const

Devuelve la ruta absoluta (una ruta que comienza con "/" o con una especificación de unidad), que puede contener enlaces simbólicos, pero nunca contiene ".", ".." redundantes ni separadores múltiples.

Véase también setPath(), canonicalPath(), exists(), cleanPath(), dirName() y absoluteFilePath().

[static] void QDir::addSearchPath(const QString &prefix, const QString &path)

Añade path a la ruta de búsqueda de prefix.

Véase también setSearchPaths().

[static, since 6.0] void QDir::addSearchPath(const QString &prefix, const std::filesystem::path &path)

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.0.

QString QDir::canonicalPath() const

Devuelve la ruta canónica, es decir, una ruta sin enlaces simbólicos ni elementos "." o ".." redundantes.

En sistemas que no tienen enlaces simbólicos, esta función siempre devolverá la misma cadena que absolutePath(). Si la ruta canónica no existe (normalmente debido a enlaces simbólicos colgantes) canonicalPath() devuelve una cadena vacía.

Ejemplo:

QString bin = "/local/bin";         // where /local/bin is a symlink to /usr/bin
QDir binDir(bin);
QString canonicalBin = binDir.canonicalPath();
// canonicalBin now equals "/usr/bin"

QString ls = "/local/bin/ls";       // where ls is the executable "ls"
QDir lsDir(ls);
QString canonicalLs = lsDir.canonicalPath();
// canonicalLS now equals "/usr/bin/ls".

Véase también path(), absolutePath(), exists(), cleanPath(), dirName(), y absoluteFilePath().

bool QDir::cd(const QString &dirName)

Cambia el directorio QDir's a dirName.

Devuelve true si el nuevo directorio existe; en caso contrario devuelve false. Tenga en cuenta que la operación lógica cd() no se realiza si el nuevo directorio no existe.

Llamar a cd("..") es equivalente a llamar a cdUp().

Véase también cdUp(), isReadable(), exists() y path().

bool QDir::cdUp()

Cambia de directorio desplazándose un directorio hacia arriba desde el directorio actual de QDir.

Devuelve true si el nuevo directorio existe; en caso contrario devuelve false. Tenga en cuenta que la operación lógica cdUp() no se realiza si el nuevo directorio no existe.

Nota: En Android, esto no es compatible con URIs de contenido. Para más información, véase DocumentFile.getParentFile().

Véase también cd(), isReadable(), exists() y path().

[static] QString QDir::cleanPath(const QString &path)

Devuelve path con los separadores de directorio normalizados (es decir, los separadores nativos de la plataforma convertidos a "/") y los redundantes eliminados, y los ". "s y ".. "s resueltos (en la medida de lo posible).

Se mantienen los enlaces simbólicos. Esta función no devuelve la ruta canónica, sino la versión más simple de la entrada. Por ejemplo, "./local" se convierte en "local", "local/../bin" en "bin" y "/local/usr/../bin" en "/local/bin".

Véase también absolutePath() y canonicalPath().

qsizetype QDir::count() const

Devuelve el número total de directorios y archivos del directorio.

Equivale a entryList().count().

Nota: En versiones de Qt anteriores a la 6.5, esta función devolvía uint, no qsizetype.

Véase también operator[]() y entryList().

[static] QDir QDir::current()

Devuelve el directorio actual de la aplicación.

El directorio se construye utilizando la ruta absoluta del directorio actual, asegurando que su path() será el mismo que su absolutePath().

Véase también currentPath(), setCurrent(), home(), root() y temp().

[static] QString QDir::currentPath()

Devuelve la ruta absoluta del directorio actual de la aplicación. El directorio actual es el último directorio establecido con QDir::setCurrent() o, si nunca se llamó, el directorio en el que esta aplicación fue iniciada por el proceso padre.

Ver también current(), setCurrent(), homePath(), rootPath(), tempPath(), y QCoreApplication::applicationDirPath().

QString QDir::dirName() const

Devuelve el nombre del directorio; no es lo mismo que la ruta, por ejemplo, un directorio con el nombre "mail", podría tener la ruta "/var/spool/mail". Si el directorio no tiene nombre (por ejemplo, es el directorio raíz) se devuelve una cadena vacía.

No se comprueba que exista realmente un directorio con este nombre; pero véase exists().

Véase también path(), filePath(), absolutePath() y absoluteFilePath().

[static] QFileInfoList QDir::drives()

Devuelve una lista de los directorios raíz de este sistema.

En Windows, devuelve una lista de objetos QFileInfo que contienen "C:/", "D:/", etc. No devuelve unidades con soportes extraíbles que estén vacías. En otros sistemas operativos, devuelve una lista que contiene sólo un directorio raíz (es decir, "/").

Véase también root() y rootPath().

QFileInfoList QDir::entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

Devuelve una lista de objetos QFileInfo para todos los archivos y directorios del directorio, ordenados según los filtros de nombres y atributos establecidos previamente con setNameFilters() y setFilter(), y ordenados según las banderas establecidas con setSorting().

El filtro de nombres, el filtro de atributos de archivos y la especificación de ordenación pueden modificarse con los argumentos nameFilters, filters y sort.

Devuelve una lista vacía si el directorio es ilegible, no existe o si nada coincide con la especificación.

Véase también entryList(), setNameFilters(), setSorting(), setFilter(), isReadable() y exists().

QFileInfoList QDir::entryInfoList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

Devuelve una lista de objetos QFileInfo para todos los archivos y directorios del directorio, ordenados según los filtros de nombres y atributos establecidos previamente con setNameFilters() y setFilter(), y ordenados según las banderas establecidas con setSorting().

El filtro de atributos y las especificaciones de ordenación se pueden anular utilizando los argumentos filters y sort.

Devuelve una lista vacía si el directorio es ilegible, no existe, o si nada coincide con la especificación.

Se trata de una función sobrecargada.

Véase también entryList(), setNameFilters(), setSorting(), setFilter(), isReadable() y exists().

QStringList QDir::entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

Devuelve una lista de los nombres de todos los archivos y directorios del directorio, ordenados según los filtros de nombres y atributos establecidos previamente con setNameFilters() y setFilter(), y ordenados según las banderas establecidas con setSorting().

El filtro de nombres, el filtro de atributos de archivos y la especificación de ordenación se pueden anular utilizando los argumentos nameFilters, filters y sort.

Devuelve una lista vacía si el directorio es ilegible, no existe o si nada coincide con la especificación.

Véase también entryInfoList(), setNameFilters(), setSorting() y setFilter().

QStringList QDir::entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

Devuelve una lista de los nombres de todos los archivos y directorios del directorio, ordenados según los filtros de nombres y atributos establecidos previamente con setNameFilters() y setFilter(), y ordenados según las banderas establecidas con setSorting().

El filtro de atributos y las especificaciones de ordenación se pueden anular utilizando los argumentos filters y sort.

Devuelve una lista vacía si el directorio es ilegible, no existe, o si nada coincide con la especificación.

Nota: Para listar enlaces simbólicos que apuntan a ficheros no existentes, debe pasarse System al filtro.

Se trata de una función sobrecargada.

Véase también entryInfoList(), setNameFilters(), setSorting() y setFilter().

bool QDir::exists(const QString &name) const

Devuelve true si el archivo llamado name existe; en caso contrario devuelve false.

A menos que name contenga una ruta de archivo absoluta, se asume que el nombre del archivo es relativo al propio directorio, por lo que esta función se utiliza normalmente para comprobar la presencia de archivos dentro de un directorio.

Véase también QFileInfo::exists() y QFile::exists().

bool QDir::exists() const

Devuelve true si el directorio existe; en caso contrario devuelve false. (Si se encuentra un archivo con el mismo nombre esta función devolverá false).

La sobrecarga de esta función que acepta un argumento se utiliza para comprobar la presencia de ficheros y directorios dentro de un directorio.

Se trata de una función sobrecargada.

Véase también QFileInfo::exists() y QFile::exists().

QString QDir::filePath(const QString &fileName) const

Devuelve el nombre de la ruta de un archivo en el directorio. No comprueba si el fichero existe realmente en el directorio; pero véase exists(). Si QDir es relativo, el nombre de ruta devuelto también lo será. Los separadores múltiples redundantes o los directorios "." y ".." en fileName no se eliminan (véase cleanPath()).

Véase también dirName(), absoluteFilePath(), isRelative() y canonicalPath().

[since 6.0] std::filesystem::path QDir::filesystemAbsolutePath() const

Devuelve absolutePath() como std::filesystem::path.

Esta función se introdujo en Qt 6.0.

Véase también absolutePath().

[since 6.0] std::filesystem::path QDir::filesystemCanonicalPath() const

Devuelve canonicalPath() como std::filesystem::path.

Esta función se introdujo en Qt 6.0.

Véase también canonicalPath().

[since 6.0] std::filesystem::path QDir::filesystemPath() const

Devuelve path() como std::filesystem::path.

Esta función se introdujo en Qt 6.0.

Véase también path().

QDir::Filters QDir::filter() const

Devuelve el valor establecido por setFilter()

Véase también setFilter().

[static] QString QDir::fromNativeSeparators(const QString &pathName)

Devuelve pathName utilizando '/' como separador de archivos. En Windows, por ejemplo, fromNativeSeparators("c:\\winnt\\system32") devuelve "c:/winnt/system32".

La cadena devuelta puede ser la misma que el argumento en algunos sistemas operativos, por ejemplo en Unix.

Véase también toNativeSeparators() y separator().

[static] QDir QDir::home()

Devuelve el directorio personal del usuario.

El directorio se construye utilizando la ruta absoluta del directorio raíz, asegurando que su path() será el mismo que su absolutePath().

Véase homePath() para más detalles.

Véase también drives(), current(), root(), y temp().

[static] QString QDir::homePath()

Devuelve la ruta absoluta del directorio personal del usuario.

En Windows esta función devolverá el directorio del perfil del usuario actual. Típicamente, esto es:

C:/Users/Username

Utilice la función toNativeSeparators() para convertir los separadores a los adecuados para el sistema operativo subyacente.

Si el directorio del perfil del usuario actual no existe o no se puede recuperar, se comprobarán las siguientes alternativas (en el orden indicado) hasta que se encuentre una ruta existente y disponible:

  1. La ruta especificada por la variable de entorno USERPROFILE.
  2. La ruta formada por la concatenación de las variables de entorno HOMEDRIVE y HOMEPATH.
  3. La ruta especificada por la variable de entorno HOME.
  4. La ruta devuelta por la función rootPath() (que utiliza la variable de entorno SystemDrive ).
  5. El directorio C:/.

En los sistemas operativos distintos de Windows, se utiliza la variable de entorno HOME si existe; en caso contrario, la ruta devuelta por la función rootPath().

Véase también home(), currentPath(), rootPath() y tempPath().

bool QDir::isAbsolute() const

Devuelve true si la ruta del directorio es absoluta; en caso contrario devuelve false. Véase isAbsolutePath().

Nota: Las rutas que comienzan con dos puntos (:) siempre se consideran absolutas, ya que denotan un QResource.

Véase también isRelative(), makeAbsolute() y cleanPath().

[static] bool QDir::isAbsolutePath(const QString &path)

Devuelve true si path es absoluta; devuelve false si es relativa.

Nota: Las rutas que comienzan con dos puntos (:) siempre se consideran absolutas, ya que denotan un QResource.

Véase también isAbsolute(), isRelativePath(), makeAbsolute(), cleanPath() y QResource.

bool QDir::isEmpty(QDir::Filters filters = Filters(AllEntries | NoDotAndDotDot)) const

Devuelve si el directorio está vacío.

Equivale a count() == 0 con filtros QDir::AllEntries | QDir::NoDotAndDotDot, pero es más rápido ya que sólo comprueba si el directorio contiene al menos una entrada.

Nota: A menos que configure las banderas filters para incluir QDir::NoDotAndDotDot (como hace el valor por defecto), ningún directorio está vacío.

Véase también count(), entryList(), y setFilter().

bool QDir::isReadable() const

Devuelve true si el directorio es legible y podemos abrir ficheros por su nombre; en caso contrario devuelve false.

Advertencia: Un valor falso de esta función no es garantía de que los ficheros del directorio no sean accesibles.

Véase también QFileInfo::isReadable().

bool QDir::isRelative() const

Devuelve true si la ruta del directorio es relativa; en caso contrario, devuelve false. (En Unix, una ruta es relativa si no empieza por "/").

Nota: Las rutas que comienzan con dos puntos (:) se consideran siempre absolutas, ya que denotan un QResource.

Véase también makeAbsolute(), isAbsolute(), isAbsolutePath() y cleanPath().

[static] bool QDir::isRelativePath(const QString &path)

Devuelve true si path es relativa; devuelve false si es absoluta.

Nota: Las rutas que comienzan con dos puntos (:) siempre se consideran absolutas, ya que denotan un QResource.

Véase también isRelative(), isAbsolutePath() y makeAbsolute().

bool QDir::isRoot() const

Devuelve true si el directorio es el directorio raíz; en caso contrario devuelve false.

Nota: Si el directorio es un enlace simbólico al directorio raíz esta función devuelve false. Si desea comprobarlo, utilice canonicalPath(), por ejemplo.

QDir dir("/tmp/enlace_raiz"); dir = dir.canonicalPath();if (dir.isRoot())    qWarning("It is a root link");

Véase también root() y rootPath().

[static constexpr noexcept] QChar QDir::listSeparator()

Devuelve el separador nativo de la lista de rutas: ':' en Unix y ';' en Windows.

Véase también separator().

bool QDir::makeAbsolute()

Convierte la ruta del directorio en una ruta absoluta. Si ya es absoluta, no ocurre nada. Devuelve true si la conversión ha tenido éxito; en caso contrario devuelve false.

Véase también isAbsolute(), isAbsolutePath(), isRelative() y cleanPath().

[static] bool QDir::match(const QString &filter, const QString &fileName)

Devuelve true si fileName coincide con el patrón comodín (glob) filter; en caso contrario devuelve false. filter puede contener varios patrones separados por espacios o punto y coma. No se distingue entre mayúsculas y minúsculas.

Véase también QRegularExpression::fromWildcard(), entryList() y entryInfoList().

[static] bool QDir::match(const QStringList &filters, const QString &fileName)

Devuelve true si fileName coincide con alguno de los patrones comodín (glob) de la lista de filters; en caso contrario devuelve false. No se distingue entre mayúsculas y minúsculas.

Se trata de una función sobrecargada.

Véase también QRegularExpression::fromWildcard(), entryList() y entryInfoList().

bool QDir::mkdir(const QString &dirName, std::optional<QFileDevice::Permissions> permissions = std::nullopt) const

Crea un subdirectorio llamado dirName con el valor dado permissions.

Si permissions es std::nullopt (por defecto) esta función establecerá los permisos por defecto.

Devuelve true en caso de éxito; devuelve false si la operación falló o dirName ya existía.

Si dirName ya existía, este método no cambiará sus permisos.

En sistemas POSIX permissions son modificados por la umask (máscara de creación de archivos) del proceso actual, lo que significa que algunos bits de permiso pueden estar desactivados.

En Windows, por defecto, un directorio nuevo hereda sus permisos de su directorio padre. permissions se emulan utilizando ACLs. Estas ACLs pueden estar en orden no canónico cuando al grupo se le conceden menos permisos que a otros. Los archivos y directorios con tales permisos generarán advertencias cuando se abra la pestaña Seguridad del cuadro de diálogo Propiedades. Conceder al grupo todos los permisos concedidos a los demás evita tales advertencias.

Nota: Qt 6.10 añadió el parámetro permissions. Para obtener el comportamiento antiguo (utilizando los permisos específicos de la plataforma por defecto) de mkdir(const QString &) establezca permissions en std::nullopt (el valor por defecto). Este nuevo método también sustituye de forma transparente a la sobrecarga mkdir(const QString &, QFile::Permissions).

Véase también rmdir(), mkpath(), y rmpath().

bool QDir::mkpath(const QString &dirPath, std::optional<QFileDevice::Permissions> permissions = std::nullopt) const

Crea un directorio llamado dirPath.

Si dirPath aún no existe, este método lo creará - junto con cualquier directorio padre inexistente - con permissions.

Si dirPath ya existía, este método no cambiará sus permisos; lo mismo ocurre con cualquier directorio padre ya existente.

Si permissions es std::nullopt (el valor por defecto) esta función establecerá los permisos por defecto.

Devuelve true en caso de éxito o si dirPath ya existía; en caso contrario devuelve false.

En sistemas POSIX permissions es modificado por la umask (máscara de creación de archivos) del proceso actual, lo que significa que algunos bits de permiso pueden estar desactivados.

En Windows, por defecto, un nuevo directorio hereda sus permisos de su directorio padre. permissions se emulan utilizando ACLs. Estas ACLs pueden estar en orden no canónico cuando al grupo se le conceden menos permisos que a otros. Los archivos y directorios con tales permisos generarán advertencias cuando se abra la pestaña Seguridad del cuadro de diálogo Propiedades. Conceder al grupo todos los permisos concedidos a los demás evita tales advertencias.

Nota: Qt 6.10 añadió el parámetro permissions. Para obtener el comportamiento antiguo (utilizando los permisos específicos de la plataforma por defecto) de mkpath(const QString &) establezca permissions en std::nullopt (el valor por defecto).

Véase también rmpath(), mkdir(), y rmdir().

QStringList QDir::nameFilters() const

Devuelve la lista de cadenas establecida por setNameFilters()

Véase también setNameFilters().

QString QDir::path() const

Devuelve la ruta. Puede contener enlaces simbólicos, pero nunca ".", ".." o separadores múltiples redundantes.

La ruta devuelta puede ser absoluta o relativa (véase setPath()).

Véase también setPath(), absolutePath(), exists(), cleanPath(), dirName(), absoluteFilePath(), toNativeSeparators() y makeAbsolute().

void QDir::refresh() const

Actualiza la información del directorio.

QString QDir::relativeFilePath(const QString &fileName) const

Devuelve la ruta a fileName relativa al directorio.

QDir dir("/home/bob");
QString s;

s = dir.relativeFilePath("images/file.jpg");     // s is "images/file.jpg"
s = dir.relativeFilePath("/home/mary/file.txt"); // s is "../mary/file.txt"

Véase también absoluteFilePath(), filePath() y canonicalPath().

bool QDir::remove(const QString &fileName)

Elimina el archivo, fileName.

Devuelve true si el archivo se elimina correctamente; en caso contrario, devuelve false.

bool QDir::removeRecursively()

Elimina el directorio, incluido todo su contenido.

Devuelve true si tiene éxito, en caso contrario devuelve false.

Si no se puede eliminar un archivo o directorio, removeRecursively() sigue adelante e intenta eliminar tantos archivos y subdirectorios como sea posible, luego devuelve false.

Si el directorio ya ha sido eliminado, el método devuelve true (resultado esperado ya alcanzado).

Nota: Esta función está pensada para eliminar un pequeño directorio interno de la aplicación (como un directorio temporal), pero no directorios visibles para el usuario. Para las operaciones visibles para el usuario, se recomienda informar de los errores de forma más precisa al usuario, ofrecer soluciones en caso de errores, mostrar el progreso durante la eliminación, ya que puede tardar varios minutos, etc.

bool QDir::rename(const QString &oldName, const QString &newName)

Renombra un archivo o directorio de oldName a newName, y devuelve true si tiene éxito; en caso contrario devuelve false.

En la mayoría de los sistemas de archivos, rename() falla sólo si oldName no existe, o si ya existe un archivo con el nuevo nombre. Sin embargo, también hay otras razones por las que rename() puede fallar. Por ejemplo, en al menos un sistema de archivos, rename() falla si newName apunta a un archivo abierto.

Si oldName es un archivo (no un directorio) que no puede ser renombrado inmediatamente, Qt intentará copiar oldName a newName y eliminar oldName.

Véase también QFile::rename().

bool QDir::rmdir(const QString &dirName) const

Elimina el directorio especificado por dirName.

El directorio debe estar vacío para que rmdir() tenga éxito.

Devuelve true si tiene éxito; en caso contrario devuelve false.

Véase también mkdir().

bool QDir::rmpath(const QString &dirPath) const

Elimina la ruta del directorio dirPath.

La función eliminará todos los directorios padre en dirPath, siempre que estén vacíos. Esto es lo contrario de mkpath(dirRuta).

Devuelve true si tiene éxito; en caso contrario devuelve false.

Véase también mkpath().

[static] QDir QDir::root()

Devuelve el directorio raíz.

El directorio se construye utilizando la ruta absoluta del directorio raíz, asegurando que su path() será el mismo que su absolutePath().

Véase rootPath() para más detalles.

Véase también drives(), current(), home(), y temp().

[static] QString QDir::rootPath()

Devuelve la ruta absoluta del directorio raíz.

En los sistemas operativos Unix devuelve "/". En los sistemas operativos Windows, normalmente devuelve "c:/".

Véase también root(), drives(), currentPath(), homePath() y tempPath().

[static] QStringList QDir::searchPaths(const QString &prefix)

Devuelve las rutas de búsqueda de prefix.

Véase también setSearchPaths() y addSearchPath().

[static] QChar QDir::separator()

Devuelve el separador de directorios nativo: "/" en Unix y "\" en Windows.

No es necesario utilizar esta función para construir rutas de archivos. Si siempre usas "/", Qt traducirá tus rutas para ajustarse al sistema operativo subyacente. Si desea mostrar las rutas al usuario utilizando el separador de su sistema operativo utilice toNativeSeparators().

Véase también listSeparator().

[static] bool QDir::setCurrent(const QString &path)

Establece el directorio de trabajo actual de la aplicación en path. Devuelve true si el directorio se ha cambiado correctamente; en caso contrario, devuelve false.

QString absolute = "/local/bin";
QString relative = "local/bin";
QFileInfo absFile(absolute);
QFileInfo relFile(relative);

QDir::setCurrent(QDir::rootPath());
// absFile and relFile now point to the same file

QDir::setCurrent("/tmp");
// absFile now points to "/local/bin",
// while relFile points to "/tmp/local/bin"

Véase también current(), currentPath(), home(), root() y temp().

void QDir::setFilter(QDir::Filters filters)

Establece el filtro utilizado por entryList() y entryInfoList() en filters. El filtro se utiliza para especificar el tipo de archivos que deben ser devueltos por entryList() y entryInfoList(). Véase QDir::Filter.

Véase también filter() y setNameFilters().

void QDir::setNameFilters(const QStringList &nameFilters)

Establece los filtros de nombre utilizados por entryList() y entryInfoList() en la lista de filtros especificada por nameFilters.

Cada filtro de nombre es un filtro comodín (globbing) que entiende los comodines * y ?. Véase QRegularExpression::fromWildcard().

Por ejemplo, el siguiente código establece tres filtros de nombre en QDir para garantizar que sólo se enumeran los archivos con las extensiones utilizadas normalmente para los archivos de código fuente C++:

    QStringList filters;
    filters << "*.cpp" << "*.cxx" << "*.cc";
    dir.setNameFilters(filters);

Véase también nameFilters() y setFilter().

void QDir::setPath(const QString &path)

Establece la ruta del directorio en path. La ruta se limpia de ".", ".." redundantes y de separadores múltiples. No se comprueba si existe realmente un directorio con esta ruta, pero puede hacerlo usted mismo utilizando exists().

La ruta puede ser absoluta o relativa. Las rutas absolutas comienzan con el separador de directorios "/" (opcionalmente precedido de una especificación de unidad en Windows). Los nombres de archivo relativos comienzan con un nombre de directorio o un nombre de archivo y especifican una ruta relativa al directorio actual. Un ejemplo de ruta absoluta es la cadena "/tmp/quartz"; una ruta relativa podría ser "src/fatlib".

Véase también path(), absolutePath(), exists(), cleanPath(), dirName(), absoluteFilePath(), isRelative() y makeAbsolute().

[since 6.0] void QDir::setPath(const std::filesystem::path &path)

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.0.

[static] void QDir::setSearchPaths(const QString &prefix, const QStringList &searchPaths)

Establece o sustituye las rutas de búsqueda de Qt para nombres de archivo con el prefijo prefix a searchPaths.

Para especificar un prefijo para un nombre de archivo, anteponga el prefijo seguido de dos puntos (por ejemplo, "images:undo.png", "xmldocs:books.xml"). prefix sólo puede contener letras o números (por ejemplo, no puede contener dos puntos ni una barra).

Qt utiliza esta ruta de búsqueda para localizar archivos con un prefijo conocido. Las entradas de la ruta de búsqueda se comprueban en orden, empezando por la primera entrada.

QDir::setSearchPaths("icons", QStringList(QDir::homePath() + "/images"));
QDir::setSearchPaths("docs", QStringList(":/embeddedDocuments"));
//...
QPixmap pixmap("icons:undo.png"); // will look for undo.png in QDir::homePath() + "/images"
QFile file("docs:design.odf"); // will look in the :/embeddedDocuments resource path

El prefijo del nombre del archivo debe tener al menos 2 caracteres para evitar conflictos con las letras de unidad de Windows.

Las rutas de búsqueda pueden contener rutas a The Qt Resource System.

Véase también searchPaths().

void QDir::setSorting(QDir::SortFlags sort)

Establece el orden de clasificación utilizado por entryList() y entryInfoList().

El sort se especifica OR-ing valores del enum QDir::SortFlag.

Véase también sorting() y SortFlag.

QDir::SortFlags QDir::sorting() const

Devuelve el valor establecido por setSorting()

Véase también setSorting() y SortFlag.

[noexcept] void QDir::swap(QDir &other)

Intercambia esta instancia de QDir con other. Esta operación es muy rápida y nunca falla.

[static] QDir QDir::temp()

Devuelve el directorio temporal del sistema.

El directorio se construye utilizando la ruta canónica absoluta del directorio temporal, asegurando que su path() será el mismo que su absolutePath().

Véase tempPath() para más detalles.

Véase también drives(), current(), home(), y root().

[static] QString QDir::tempPath()

Devuelve la ruta canónica absoluta del directorio temporal del sistema.

En sistemas Unix/Linux es la ruta de la variable de entorno TMPDIR o /tmp si TMPDIR no está definida. En Windows suele ser la ruta de la variable de entorno TEMP o TMP. La ruta devuelta por este método no termina con un separador de directorio a menos que sea el directorio raíz (de una unidad).

Véase también temp(), currentPath(), homePath() y rootPath().

[static] QString QDir::toNativeSeparators(const QString &pathName)

Devuelve pathName con los separadores '/' convertidos a separadores apropiados para el sistema operativo subyacente.

En Windows, toNativeSeparators("c:/winnt/system32") devuelve "c:\winnt\system32 ".

La cadena devuelta puede ser la misma que el argumento en algunos sistemas operativos, por ejemplo en Unix.

Véase también fromNativeSeparators() y separator().

[noexcept] QDir &QDir::operator=(QDir &&other)

Mover-asigna other a esta instancia QDir.

QDir &QDir::operator=(const QDir &dir)

Hace una copia del objeto dir y lo asigna a este objeto QDir.

QString QDir::operator[](qsizetype pos) const

Devuelve el nombre de archivo en la posición pos de la lista de nombres de archivo. Equivale a entryList().at(index). pos debe ser una posición de índice válida en la lista (es decir, 0 <= pos < count()).

Nota: En versiones de Qt anteriores a la 6.5, pos era un int, no qsizetype.

Véase también count() y entryList().

No miembros relacionados

[noexcept] bool operator!=(const QDir &lhs, const QDir &rhs)

Devuelve true si el directorio lhs y el directorio rhs tienen rutas diferentes o configuraciones de ordenación o filtrado diferentes; en caso contrario, devuelve false.

Ejemplo:

// El directorio actual es "/usr/local"QDir d1("/usr/local/bin"); d1.setFilter(QDir::Executable);QDir d2("bin");if (d1 != d2)    qDebug("They differ");

[noexcept] bool operator==(const QDir &lhs, const QDir &rhs)

Devuelve true si el directorio lhs y el directorio rhs tienen la misma ruta y sus opciones de ordenación y filtrado son las mismas; en caso contrario devuelve false.

Ejemplo:

// El directorio actual es "/usr/local"QDir d1("/usr/local/bin");QDir d2("bin");if (d1 == d2)    qDebug("They're the same");

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.