QFile Class
La clase QFile proporciona una interfaz para leer y escribir en ficheros. Más...
| Cabecera: | #include <QFile> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Hereda: | QFileDevice |
| Heredado por: |
- Lista de todos los miembros, incluyendo los heredados
- QFile es parte de Entrada/Salida y Redes.
Nota: Todas las funciones de esta clase son reentrantes.
Funciones Públicas
| QFile() | |
| QFile(QObject *parent) | |
| QFile(const QString &name) | |
(since 6.0) | QFile(const std::filesystem::path &name) |
| QFile(const QString &name, QObject *parent) | |
(since 6.0) | QFile(const std::filesystem::path &name, QObject *parent) |
| virtual | ~QFile() |
| bool | copy(const QString &newName) |
(since 6.0) bool | copy(const std::filesystem::path &newName) |
| bool | exists() const |
(since 6.0) std::filesystem::path | filesystemFileName() const |
(since 6.3) std::filesystem::path | filesystemSymLinkTarget() const |
| bool | link(const QString &linkName) |
(since 6.0) bool | link(const std::filesystem::path &newName) |
| bool | moveToTrash() |
(since 6.3) bool | open(QIODeviceBase::OpenMode mode, QFileDevice::Permissions permissions) |
| bool | open(FILE *fh, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle) |
| bool | open(int fd, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle) |
| bool | remove() |
| bool | rename(const QString &newName) |
(since 6.0) bool | rename(const std::filesystem::path &newName) |
| void | setFileName(const QString &name) |
(since 6.0) void | setFileName(const std::filesystem::path &name) |
| QString | symLinkTarget() const |
Funciones Públicas Reimplementadas
| virtual QString | fileName() const override |
| virtual bool | open(QIODeviceBase::OpenMode mode) override |
| virtual QFileDevice::Permissions | permissions() const override |
| virtual bool | resize(qint64 sz) override |
| virtual bool | setPermissions(QFileDevice::Permissions permissions) override |
| virtual qint64 | size() const override |
Miembros públicos estáticos
| bool | copy(const QString &fileName, const QString &newName) |
| QString | decodeName(const QByteArray &localFileName) |
| QString | decodeName(const char *localFileName) |
| QByteArray | encodeName(const QString &fileName) |
| bool | exists(const QString &fileName) |
(since 6.3) std::filesystem::path | filesystemSymLinkTarget(const std::filesystem::path &fileName) |
| bool | link(const QString &fileName, const QString &linkName) |
| bool | moveToTrash(const QString &fileName, QString *pathInTrash = nullptr) |
| QFileDevice::Permissions | permissions(const QString &fileName) |
(since 6.0) QFileDevice::Permissions | permissions(const std::filesystem::path &filename) |
| bool | remove(const QString &fileName) |
| bool | rename(const QString &oldName, const QString &newName) |
| bool | resize(const QString &fileName, qint64 sz) |
| bool | setPermissions(const QString &fileName, QFileDevice::Permissions permissions) |
(since 6.0) bool | setPermissions(const std::filesystem::path &filename, QFileDevice::Permissions permissionSpec) |
(since 6.9) bool | supportsMoveToTrash() |
| QString | symLinkTarget(const QString &fileName) |
Descripción Detallada
QFile es un dispositivo de E/S para leer y escribir archivos y recursos de texto y binarios. Un QFile puede ser utilizado por sí mismo o, más convenientemente, con un QTextStream o QDataStream.
El nombre del fichero se pasa normalmente en el constructor, pero puede establecerse en cualquier momento usando setFileName(). QFile espera que el separador de archivos sea '/' independientemente del sistema operativo. No se admite el uso de otros separadores (por ejemplo, '\').
Puede comprobar la existencia de un archivo utilizando exists(), y eliminar un archivo utilizando remove(). (Las operaciones más avanzadas relacionadas con el sistema de archivos las proporcionan QFileInfo y QDir).
El archivo se abre con open(), se cierra con close() y se vacía con flush(). Los datos se leen y escriben normalmente con QDataStream o QTextStream, pero también se puede llamar a las funciones heredadas de QIODevice read (), readLine(), readAll(), write(). QFile también hereda getChar(), putChar(), y ungetChar(), que funcionan carácter a carácter.
El tamaño del archivo es devuelto por size(). Puede obtener la posición actual del archivo utilizando pos(), o moverse a una nueva posición del archivo utilizando seek(). Si ha llegado al final del archivo, atEnd() devuelve true.
Lectura directa de archivos
El siguiente ejemplo lee un archivo de texto línea por línea:
QFile file("in.txt"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; while (!file.atEnd()) { QByteArray line = file.readLine(); process_line(line); }
La bandera Text pasada a open() indica a Qt que convierta los terminadores de línea al estilo Windows ("\r\n ") en terminadores al estilo C++ ("\n"). Por defecto, QFile asume binario, es decir, no realiza ninguna conversión en los bytes almacenados en el archivo.
Uso de flujos para leer archivos
El siguiente ejemplo utiliza QTextStream para leer un fichero de texto línea a línea:
QFile file("in.txt"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; QTextStream in(&file); while (!in.atEnd()) { QString line = in.readLine(); process_line(line); }
QTextStream se encarga de convertir los datos de 8 bits almacenados en el disco en un Unicode de 16 bits QString. Por defecto, asume que el archivo está codificado en UTF-8. Esto puede cambiarse utilizando QTextStream::setEncoding().
Para escribir texto, podemos utilizar el operador<<(), que está sobrecargado para tomar un QTextStream a la izquierda y varios tipos de datos (incluyendo QString) a la derecha:
QFile file("out.txt"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) return; QTextStream out(&file); out << "The magic number is: " << 49 << "\n";
QDataStream es similar, en el sentido de que puedes usar operator<<() para escribir datos y operator>>() para leerlos de vuelta. Consulte la documentación de la clase para más detalles.
Señales
A diferencia de otras implementaciones de QIODevice, como QTcpSocket, QFile no emite las señales aboutToClose(), bytesWritten(), o readyRead(). Este detalle de implementación significa que QFile no es adecuado para leer y escribir ciertos tipos de archivos, como archivos de dispositivo en plataformas Unix.
Problemas específicos de la plataforma
Las API de Qt relacionadas con la E/S utilizan QStrings basadas en UTF-16 para representar las rutas de los archivos. Sin embargo, las APIs estándar de C++ (<cstdio> o <iostream>) o las APIs específicas de plataforma suelen necesitar una ruta codificada en 8 bits. Puede utilizar encodeName() y decodeName() para convertir entre ambas representaciones.
En Unix, hay algunos archivos de sistema especiales (por ejemplo, en /proc) para los que size() siempre devolverá 0, aunque es posible que aún pueda leer más datos de un archivo de este tipo; los datos se generan en respuesta directa a su llamada a read(). En este caso, sin embargo, no puede utilizar atEnd() para determinar si hay más datos para leer (ya que atEnd() devolverá verdadero para un archivo que dice tener tamaño 0). En su lugar, debe llamar a readAll(), o llamar a read() o readLine() repetidamente hasta que no se puedan leer más datos. El siguiente ejemplo utiliza QTextStream para leer /proc/modules línea por línea:
QFile file("/proc/modules"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; QTextStream in(&file); QString line = in.readLine(); while (!line.isNull()) { process_line(line); line = in.readLine(); }
Los permisos de los archivos se gestionan de forma diferente en los sistemas Unix y Windows. En un directorio que no sea writable en sistemas tipo Unix, no se pueden crear archivos. Este no es siempre el caso en Windows, donde, por ejemplo, el directorio 'Mis Documentos' normalmente no tiene permisos de escritura, pero aún es posible crear archivos en él.
La comprensión de Qt de los permisos de archivo es limitada, lo que afecta especialmente a la función QFile::setPermissions(). En Windows, Qt sólo establecerá la bandera de sólo lectura heredada, y eso sólo cuando no se pase ninguna de las banderas Write*. Qt no manipula listas de control de acceso (ACLs), lo que hace que esta función sea prácticamente inútil para volúmenes NTFS. Todavía puede ser útil para memorias USB que utilicen sistemas de ficheros VFAT. Tampoco se manipulan las ACL POSIX.
En Android, se aplican algunas limitaciones al tratar con URIs de contenido:
- Es posible que se necesiten permisos de acceso preguntando al usuario a través de QFileDialog, que implementa el selector de archivos nativo de Android.
- Intenta seguir las directrices de almacenamiento Scoped, como utilizar directorios específicos de la aplicación en lugar de otros directorios externos públicos. Para más información, consulte también las mejores prácticas de almacenamiento.
- Debido al diseño de las APIs de Qt (por ejemplo, QFile), no es posible integrar completamente estas últimas APIs con las MediaStore APIs de Android.
Ver también QTextStream, QDataStream, QFileInfo, QDir, y El Sistema de Recursos Qt.
Documentación de las funciones miembro
QFile::QFile()
Construye un objeto QFile.
[explicit] QFile::QFile(QObject *parent)
Crea un nuevo objeto de archivo con la dirección parent.
[explicit] QFile::QFile(const QString &name)
Construye un nuevo objeto de archivo para representar el archivo con la dirección name.
Nota: En versiones hasta e incluyendo Qt 6.8, este constructor es implícito, por compatibilidad con versiones anteriores. A partir de Qt 6.9 este constructor es incondicionalmente explicit. Los usuarios pueden forzar que este constructor sea explicit incluso en versiones anteriores de Qt definiendo la macro QT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH antes de incluir cualquier cabecera Qt.
[explicit, since 6.0] QFile::QFile(const std::filesystem::path &name)
Construye un nuevo objeto archivo para representar el archivo con la dirección name.
Nota: En versiones hasta e incluyendo Qt 6.8, este constructor es implícito, por compatibilidad con versiones anteriores. A partir de Qt 6.9 este constructor es incondicionalmente explicit. Los usuarios pueden forzar que este constructor sea explicit incluso en versiones anteriores de Qt definiendo la macro QT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH antes de incluir cualquier cabecera Qt.
Esta función se introdujo en Qt 6.0.
QFile::QFile(const QString &name, QObject *parent)
Construye un nuevo objeto de archivo con el parent dado para representar el archivo con el name especificado.
[since 6.0] QFile::QFile(const std::filesystem::path &name, QObject *parent)
Construye un nuevo objeto de archivo con el parent dado para representar el archivo con el name especificado.
Esta función se introdujo en Qt 6.0.
[virtual noexcept] QFile::~QFile()
Destruye el objeto archivo, cerrándolo si es necesario.
bool QFile::copy(const QString &newName)
Copia el archivo fileName() en newName.
Este fichero se cierra antes de ser copiado.
Si el fichero copiado es un enlace simbólico (symlink), se copia el fichero al que hace referencia, no el propio enlace. A excepción de los permisos, que se copian, no se copia ningún otro metadato del archivo.
Devuelve true si se ha realizado correctamente; en caso contrario, devuelve false.
Tenga en cuenta que si ya existe un archivo con el nombre newName, copy() devuelve false. Esto significa que QFile no lo sobrescribirá.
Nota: En Android, esta operación aún no está soportada para URIs del esquema content.
Véase también setFileName().
[since 6.0] bool QFile::copy(const std::filesystem::path &newName)
Esta es una función sobrecargada.
Esta función se introdujo en Qt 6.0.
[static] bool QFile::copy(const QString &fileName, const QString &newName)
Copia el fichero fileName en newName.
Si el archivo copiado es un enlace simbólico (symlink), se copia el archivo al que hace referencia, no el propio enlace. A excepción de los permisos, que se copian, no se copia ningún otro metadato del archivo.
Devuelve true si se ha realizado correctamente; en caso contrario, devuelve false.
Tenga en cuenta que si ya existe un archivo con el nombre newName, copy() devuelve false. Esto significa que QFile no lo sobrescribirá.
Nota: En Android, esta operación aún no está soportada para URIs del esquema content.
Se trata de una función sobrecargada.
Véase también rename().
[static] QString QFile::decodeName(const QByteArray &localFileName)
Esto hace lo contrario de QFile::encodeName() utilizando localFileName.
Véase también encodeName().
[static] QString QFile::decodeName(const char *localFileName)
Devuelve la versión Unicode de localFileName. Véase encodeName() para más detalles.
Se trata de una función sobrecargada.
[static] QByteArray QFile::encodeName(const QString &fileName)
Convierte fileName a una codificación de 8 bits que puede utilizar en las API nativas. En Windows, la codificación es la de la página de códigos activa de Windows (ANSI). En otras plataformas, es UTF-8, para macOS en forma descompuesta (NFD).
Véase también decodeName().
[static] bool QFile::exists(const QString &fileName)
Devuelve true si el archivo especificado por fileName existe; en caso contrario devuelve false.
Nota: Si fileName es un enlace simbólico que apunta a un archivo inexistente, se devuelve false.
bool QFile::exists() const
Devuelve true si el archivo especificado por fileName() existe; en caso contrario devuelve false.
Se trata de una función sobrecargada.
Véase también fileName() y setFileName().
[override virtual] QString QFile::fileName() const
Reimplementa: QFileDevice::fileName() const.
Devuelve el nombre del fichero tal y como fue establecido por setFileName(), rename(), o por los constructores QFile.
Véase también setFileName(), rename(), y QFileInfo::fileName().
[since 6.0] std::filesystem::path QFile::filesystemFileName() const
Devuelve fileName() como std::filesystem::path.
Esta función se introdujo en Qt 6.0.
[since 6.3] std::filesystem::path QFile::filesystemSymLinkTarget() const
Devuelve symLinkTarget() como std::filesystem::path.
Esta función se introdujo en Qt 6.3.
[static, since 6.3] std::filesystem::path QFile::filesystemSymLinkTarget(const std::filesystem::path &fileName)
Devuelve symLinkTarget() como std::filesystem::path de fileName.
Esta función se introdujo en Qt 6.3.
bool QFile::link(const QString &linkName)
Crea un enlace llamado linkName que apunta al archivo especificado actualmente por fileName(). Lo que es un enlace depende del sistema de archivos subyacente (ya sea un acceso directo en Windows o un enlace simbólico en Unix). Devuelve true si tiene éxito; en caso contrario devuelve false.
Esta función no sobrescribirá una entidad ya existente en el sistema de ficheros; en este caso, link() devolverá false y configurará error() para que devuelva RenameError.
Nota: Para crear un enlace válido en Windows, linkName debe tener una extensión de archivo .lnk.
Véase también setFileName().
[since 6.0] bool QFile::link(const std::filesystem::path &newName)
Esta es una función sobrecargada.
Esta función se introdujo en Qt 6.0.
[static] bool QFile::link(const QString &fileName, const QString &linkName)
Crea un enlace llamado linkName que apunta al archivo fileName. Lo que es un enlace depende del sistema de archivos subyacente (ya sea un acceso directo en Windows o un enlace simbólico en Unix). Devuelve true si tiene éxito; en caso contrario devuelve false.
Se trata de una función sobrecargada.
Véase también link().
bool QFile::moveToTrash()
Mueve el fichero especificado por fileName() a la papelera. Devuelve true si tiene éxito, y establece fileName() a la ruta en la que se puede encontrar el archivo dentro de la papelera; en caso contrario devuelve false.
El tiempo que tarda en ejecutarse esta función es independiente del tamaño del fichero que se está tirando a la papelera. Si se llama a esta función en un directorio, puede ser proporcional al número de ficheros que se estén tirando a la papelera. Si el fileName() actual apunta a un enlace simbólico, esta función moverá el enlace a la papelera, posiblemente rompiéndolo, no el objetivo del enlace.
Esta función utiliza las APIs de Windows y macOS para realizar el trashing en esos dos sistemas operativos. En otros casos (sistemas Unix), esta función implementa la especificación FreeDesktop.org Trash versión 1.0.
Nota: Cuando se utiliza la implementación de la papelera de FreeDesktop.org, esta función fallará si no es capaz de mover los archivos a la ubicación de la papelera mediante renombramientos de archivos y hardlinks. Esta situación se produce si el archivo que se está tirando a la papelera reside en un volumen (punto de montaje) en el que el usuario actual no tiene permiso para crear el directorio .Trash, o con algunos tipos de sistemas de archivos o configuraciones inusuales (como subvolúmenes que no son a su vez puntos de montaje).
Nota: En los sistemas en los que la API del sistema no informa de la ubicación del archivo en la papelera, fileName() se establecerá en la cadena nula una vez que se haya movido el archivo. En sistemas que no tienen papelera, esta función siempre devuelve false (véase supportsMoveToTrash()).
Véase también supportsMoveToTrash(), remove(), y QDir::remove().
[static] bool QFile::moveToTrash(const QString &fileName, QString *pathInTrash = nullptr)
Mueve el archivo especificado por fileName a la papelera. Devuelve true si tiene éxito, y establece pathInTrash (si se proporciona) a la ruta en la que el archivo se puede encontrar dentro de la papelera; de lo contrario devuelve false.
El tiempo que tarda esta función en ejecutarse es independiente del tamaño del fichero que se está tirando a la papelera. Si se llama a esta función en un directorio, puede ser proporcional al número de ficheros que se estén tirando a la papelera. Si el fileName() actual apunta a un enlace simbólico, esta función moverá el enlace a la papelera, posiblemente rompiéndolo, no el objetivo del enlace.
Esta función utiliza las APIs de Windows y macOS para realizar el trashing en esos dos sistemas operativos. En otros casos (sistemas Unix), esta función implementa la especificación FreeDesktop.org Trash versión 1.0.
Nota: Cuando se utiliza la implementación de la papelera de FreeDesktop.org, esta función fallará si no es capaz de mover los archivos a la ubicación de la papelera mediante renombramientos de archivos y hardlinks. Esta situación se produce si el archivo que se está tirando a la papelera reside en un volumen (punto de montaje) en el que el usuario actual no tiene permiso para crear el directorio .Trash, o con algunos tipos de sistemas de archivos o configuraciones inusuales (como subvolúmenes que no son a su vez puntos de montaje).
Nota: En los sistemas en los que la API del sistema no informa de la ruta del archivo en la papelera, pathInTrash se establecerá en la cadena nula una vez que se haya movido el archivo. En sistemas que no tienen papelera, esta función siempre devuelve false.
Esta es una función sobrecargada.
[override virtual] bool QFile::open(QIODeviceBase::OpenMode mode)
Reimplementa: QIODevice::open(modo QIODeviceBase::OpenMode).
Abre el archivo utilizando las banderas mode, devolviendo true si tiene éxito; en caso contrario devuelve false.
Las banderas para mode deben incluir QIODeviceBase::ReadOnly, WriteOnly, o ReadWrite. También puede tener banderas adicionales, como Text y Unbuffered.
Nota: En el modo WriteOnly o ReadWrite, si el archivo en cuestión no existe todavía, esta función intentará crear un nuevo archivo antes de abrirlo. El fichero se creará con el modo 0666 enmascarado por la umask en sistemas POSIX, y con permisos heredados del directorio padre en Windows. En Android, se espera tener permiso de acceso al padre del nombre del fichero, de lo contrario, no será posible crear este fichero inexistente.
Véase también QT_USE_NODISCARD_FILE_OPEN y setFileName().
[since 6.3] bool QFile::open(QIODeviceBase::OpenMode mode, QFileDevice::Permissions permissions)
Si el fichero no existe y mode implica crearlo, se crea con el permissions especificado.
En los sistemas POSIX, los permisos reales dependen del valor de umask.
En Windows, los permisos se emulan mediante ACL. 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 dichas advertencias.
Esta es una función sobrecargada.
Esta función se introdujo en Qt 6.3.
Véase también QIODevice::OpenMode, setFileName(), y QT_USE_NODISCARD_FILE_OPEN.
bool QFile::open(FILE *fh, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)
Abre el manejador de archivo existente fh en el mode dado. handleFlags puede usarse para especificar opciones adicionales. Devuelve true si tiene éxito; en caso contrario devuelve false.
Ejemplo:
#include <stdio.h> void printError(const char* msg) { QFile file; file.open(stderr, QIODevice::WriteOnly); file.write(msg, qstrlen(msg)); // write to stderr file.close(); }
Cuando un QFile es abierto usando esta función, el comportamiento de close() es controlado por la bandera AutoCloseHandle. Si se especifica AutoCloseHandle, y esta función tiene éxito, entonces al llamar a close() se cierra el handle adoptado. En caso contrario, close() no cierra el fichero, sino que sólo lo vacía.
Advertencia:
- Si fh no se refiere a un archivo normal, por ejemplo, es
stdin,stdout, ostderr, es posible que no pueda seek(). size() devuelve0en esos casos. Consulte QIODevice::isSequential() para obtener más información. - Dado que esta función abre el archivo sin especificar el nombre del archivo, no puede utilizar QFile con QFileInfo.
Nota para la plataforma Windows
fh debe abrirse en modo binario (es decir, la cadena de modo debe contener 'b', como en "rb" o "wb") cuando se accede a archivos y otros dispositivos de acceso aleatorio. Qt traducirá los caracteres de fin de línea si pasas QIODevice::Text a mode. Los dispositivos secuenciales, como stdin y stdout, no se ven afectados por esta limitación.
Para poder utilizar los flujos stdin, stdout y stderr en la consola, es necesario habilitar la compatibilidad con aplicaciones de consola. Para ello, añada la siguiente declaración al archivo de proyecto de su aplicación:
CONFIG += console
Esta es una función sobrecargada.
Véase también close() y QT_USE_NODISCARD_FILE_OPEN.
bool QFile::open(int fd, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)
Abre el descriptor de archivo existente fd en la dirección mode. handleFlags puede utilizarse para especificar opciones adicionales. Devuelve true si tiene éxito; en caso contrario devuelve false.
Cuando se abre un QFile utilizando esta función, el comportamiento de close() está controlado por la bandera AutoCloseHandle. Si se especifica AutoCloseHandle, y esta función tiene éxito, entonces al llamar a close() se cierra el handle adoptado. En caso contrario, close() no cierra el fichero, sino que sólo lo vacía.
Advertencia: Si fd no es un archivo normal, por ejemplo, es 0 (stdin), 1 (stdout), o 2 (stderr), es posible que no pueda seek(). En esos casos, size() devuelve 0. Consulte QIODevice::isSequential() para obtener más información.
Advertencia: Dado que esta función abre el archivo sin especificar el nombre del archivo, no puede utilizar QFile con QFileInfo.
Se trata de una función sobrecargada.
Véase también close() y QT_USE_NODISCARD_FILE_OPEN.
[override virtual] QFileDevice::Permissions QFile::permissions() const
Reimplementa: QFileDevice::permissions() const.
Ver también setPermissions().
[static] QFileDevice::Permissions QFile::permissions(const QString &fileName)
Devuelve la combinación completa OR-ed together de QFile::Permission para fileName.
Esta es una función sobrecargada.
[static, since 6.0] QFileDevice::Permissions QFile::permissions(const std::filesystem::path &filename)
Esta es una función sobrecargada.
Esta función se introdujo en Qt 6.0.
bool QFile::remove()
Elimina el archivo especificado por fileName().
Devuelve true si el archivo se ha eliminado correctamente; en caso contrario, devuelve false.
El archivo se cierra antes de ser eliminado, si estaba abierto.
Véase también setFileName().
[static] bool QFile::remove(const QString &fileName)
Elimina el archivo especificado en fileName.
Devuelve true si el archivo se ha eliminado correctamente; en caso contrario, devuelve false.
Esta es una función sobrecargada.
Véase también remove().
bool QFile::rename(const QString &newName)
Cambia el nombre del archivo especificado por fileName() a newName. Devuelve true si tiene éxito; en caso contrario, devuelve false.
Si ya existe un archivo con el nombre newName, rename() devuelve false (es decir, QFile no lo sobrescribirá).
El fichero se cierra antes de renombrarlo.
Si la operación de renombrado falla, Qt intentará copiar el contenido de este archivo a newName, y luego eliminará este archivo, manteniendo sólo newName. Si esa operación de copia falla o este archivo no puede ser eliminado, el archivo de destino newName es eliminado para restaurar el estado anterior.
Véase también setFileName().
[since 6.0] bool QFile::rename(const std::filesystem::path &newName)
Esta es una función sobrecargada.
Esta función se introdujo en Qt 6.0.
[static] bool QFile::rename(const QString &oldName, const QString &newName)
Cambia el nombre del archivo oldName a newName. Devuelve true si tiene éxito; en caso contrario devuelve false.
Si ya existe un archivo con el nombre newName, rename() devuelve false (es decir, QFile no lo sobrescribirá).
Se trata de una función sobrecargada.
Véase también rename().
[override virtual] bool QFile::resize(qint64 sz)
Reimplementa: QFileDevice::resize(qint64 sz).
[static] bool QFile::resize(const QString &fileName, qint64 sz)
Establece fileName al tamaño (en bytes) sz. Devuelve true si el redimensionamiento tiene éxito; false en caso contrario. Si sz es mayor que fileName los nuevos bytes se pondrán a 0, si sz es menor el fichero simplemente se truncará.
Advertencia: Esta función puede fallar si el fichero no existe.
Esta es una función sobrecargada.
Véase también resize().
void QFile::setFileName(const QString &name)
Establece la dirección name del archivo. El nombre puede no tener ruta, tener una ruta relativa o una ruta absoluta.
No llame a esta función si el fichero ya ha sido abierto.
Si el nombre del fichero no tiene ruta o tiene una ruta relativa, la ruta utilizada será la ruta del directorio actual de la aplicación en el momento de la llamada a open( ).
Ejemplo:
QFile file; QDir::setCurrent("/tmp"); file.setFileName("readme.txt"); QDir::setCurrent("/home"); file.open(QIODevice::ReadOnly); // opens "/home/readme.txt" under Unix
Tenga en cuenta que el separador de directorios "/" funciona para todos los sistemas operativos soportados por Qt.
Véase también fileName(), QFileInfo, y QDir.
[since 6.0] void QFile::setFileName(const std::filesystem::path &name)
Esta es una función sobrecargada.
Esta función se introdujo en Qt 6.0.
[override virtual] bool QFile::setPermissions(QFileDevice::Permissions permissions)
Reimplementa: QFileDevice::setPermissions(QFileDevice::Permisos permissions).
Establece los permisos para el archivo al permissions especificado. Devuelve true si tiene éxito, o false si los permisos no pueden ser modificados.
Advertencia: Esta función no manipula ACLs, lo que puede limitar su efectividad.
Véase también permissions() y setFileName().
[static] bool QFile::setPermissions(const QString &fileName, QFileDevice::Permissions permissions)
Establece los permisos del archivo fileName en permissions.
Se trata de una función sobrecargada.
[static, since 6.0] bool QFile::setPermissions(const std::filesystem::path &filename, QFileDevice::Permissions permissionSpec)
Esta es una función sobrecargada.
Esta función se introdujo en Qt 6.0.
[override virtual] qint64 QFile::size() const
Reimplementa: QFileDevice::size() const.
[static, since 6.9] bool QFile::supportsMoveToTrash()
Devuelve true si Qt soporta mover archivos a una papelera (papelera de reciclaje) en el sistema operativo actual usando la función moveToTrash(), false en caso contrario. Tenga en cuenta que el hecho de que esta función devuelva true no implica que moveToTrash() vaya a tener éxito. En particular, esta función no comprueba si el usuario ha desactivado la funcionalidad en su configuración.
Esta función se introdujo en Qt 6.9.
Véase también moveToTrash().
[static] QString QFile::symLinkTarget(const QString &fileName)
Devuelve la ruta absoluta del archivo o directorio al que hace referencia el enlace simbólico (o acceso directo en Windows) especificado por fileName, o devuelve una cadena vacía si fileName no corresponde a un enlace simbólico.
Este nombre no puede representar un archivo existente; es sólo una cadena. QFile::exists() devuelve true si el enlace simbólico apunta a un archivo existente.
QString QFile::symLinkTarget() const
Devuelve la ruta absoluta del archivo o directorio al que apunta un enlace simbólico (o acceso directo en Windows), o una cadena vacía si el objeto no es un enlace simbólico.
Este nombre no puede representar un archivo existente; es sólo una cadena. QFile::exists() devuelve true si el enlace simbólico apunta a un archivo existente.
Se trata de una función sobrecargada.
Véase también fileName() y setFileName().
© 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.