QFile Class

Die Klasse QFile bietet eine Schnittstelle zum Lesen von und Schreiben in Dateien. Mehr...

Kopfzeile: #include <QFile>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Vererbt: QFileDevice
Vererbt von:

QTemporaryFile

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Funktionen

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

Reimplementierte öffentliche Funktionen

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

Statische öffentliche Mitglieder

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)
QString symLinkTarget(const QString &fileName)

Detaillierte Beschreibung

QFile ist ein E/A-Gerät zum Lesen und Schreiben von Text- und Binärdateien und Ressourcen. Ein QFile kann alleine oder, was noch bequemer ist, mit einem QTextStream oder QDataStream verwendet werden.

Der Dateiname wird normalerweise im Konstruktor übergeben, kann aber jederzeit mit setFileName() gesetzt werden. QFile erwartet, dass das Dateitrennzeichen '/' ist, unabhängig vom Betriebssystem. Die Verwendung von anderen Trennzeichen (z.B. '\') wird nicht unterstützt.

Sie können die Existenz einer Datei mit exists() überprüfen und eine Datei mit remove() entfernen. (Weitere fortgeschrittene dateisystembezogene Operationen werden von QFileInfo und QDir bereitgestellt).

Die Datei wird mit open() geöffnet, mit close() geschlossen und mit flush() geleert. Daten werden normalerweise mit QDataStream oder QTextStream gelesen und geschrieben, aber Sie können auch die QIODevice-vererbten Funktionen read(), readLine(), readAll(), write() aufrufen. QFile erbt auch getChar(), putChar() und ungetChar(), die ein Zeichen nach dem anderen verarbeiten.

Die Größe der Datei wird von size() zurückgegeben. Sie können die aktuelle Dateiposition mit pos() ermitteln oder mit seek() zu einer neuen Dateiposition wechseln. Wenn Sie das Ende der Datei erreicht haben, gibt atEnd() true zurück.

Direktes Lesen von Dateien

Das folgende Beispiel liest eine Textdatei Zeile für Zeile:

    QFile file("in.txt");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return;

    while (!file.atEnd()) {
        QByteArray line = file.readLine();
        process_line(line);
    }

Das Text Flag, das an open() übergeben wird, weist Qt an, die Windows-artigen Zeilenabschlüsse ("\r\n") in C++-artige Abschlüsse ("\n") umzuwandeln. Standardmäßig geht QFile von einer Binärdatei aus, d.h. es führt keine Konvertierung an den in der Datei gespeicherten Bytes durch.

Verwendung von Streams zum Lesen von Dateien

Das nächste Beispiel verwendet QTextStream, um eine Textdatei Zeile für Zeile zu lesen:

    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 Das Programm QString wandelt die auf der Festplatte gespeicherten 8-Bit-Daten in 16-Bit-Unicode um. Standardmäßig wird davon ausgegangen, dass die Datei in UTF-8 kodiert ist. Dies kann mit QTextStream::setEncoding() geändert werden.

Um Text zu schreiben, können wir den Operator<<() verwenden, der überladen ist und auf der linken Seite ein QTextStream und auf der rechten Seite verschiedene Datentypen (einschließlich QString) annehmen kann:

    QFile file("out.txt");
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
        return;

    QTextStream out(&file);
    out << "The magic number is: " << 49 << "\n";

QDataStream ist insofern ähnlich, als dass man mit operator<<() Daten schreiben und mit operator>>() zurücklesen kann. Siehe die Klassendokumentation für Details.

Signale

Im Gegensatz zu anderen QIODevice -Implementierungen, wie z.B. QTcpSocket, sendet QFile nicht die Signale aboutToClose(), bytesWritten() oder readyRead(). Dieses Implementierungsdetail bedeutet, dass QFile nicht für das Lesen und Schreiben bestimmter Dateitypen geeignet ist, wie z. B. Gerätedateien auf Unix-Plattformen.

Plattformspezifische Probleme

Qt-APIs im Zusammenhang mit I/O verwenden UTF-16-basierte QStrings zur Darstellung von Dateipfaden. Standard C++ APIs (<cstdio> oder <iostream>) oder plattformspezifische APIs benötigen jedoch oft einen 8-bit kodierten Pfad. Sie können encodeName() und decodeName() verwenden, um zwischen beiden Darstellungen zu konvertieren.

Unter Unix gibt es einige spezielle Systemdateien (z. B. in /proc), für die size() immer 0 zurückgibt. Dennoch können Sie möglicherweise weitere Daten aus einer solchen Datei lesen; die Daten werden als direkte Reaktion auf Ihren Aufruf von read() erzeugt. In diesem Fall können Sie jedoch nicht atEnd() verwenden, um festzustellen, ob es noch mehr Daten zu lesen gibt (da atEnd() für eine Datei, die angeblich die Größe 0 hat, true zurückgibt). Stattdessen sollten Sie entweder readAll() oder read() oder readLine() so oft aufrufen, bis keine Daten mehr gelesen werden können. Das nächste Beispiel verwendet QTextStream, um /proc/modules Zeile für Zeile zu lesen:

    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();
    }

Dateiberechtigungen werden auf Unix-ähnlichen Systemen und Windows unterschiedlich gehandhabt. In einem Verzeichnis ohne writable können auf Unix-ähnlichen Systemen keine Dateien erstellt werden. Dies ist unter Windows nicht immer der Fall, wo z.B. das Verzeichnis "Eigene Dateien" normalerweise nicht beschreibbar ist, aber es ist trotzdem möglich, Dateien darin zu erstellen.

Das Verständnis von Qt für Dateiberechtigungen ist begrenzt, was insbesondere die Funktion QFile::setPermissions() betrifft. Unter Windows setzt Qt nur das alte Nur-Lesen-Flag, und das auch nur, wenn keines der Write*-Flags übergeben wird. Qt manipuliert keine Zugriffskontrolllisten (ACLs), was diese Funktion für NTFS-Volumes weitgehend nutzlos macht. Für USB-Sticks, die VFAT-Dateisysteme verwenden, kann sie dennoch von Nutzen sein. POSIX ACLs werden ebenfalls nicht manipuliert.

Unter Android gelten einige Einschränkungen beim Umgang mit Inhalts-URIs:

Siehe auch QTextStream, QDataStream, QFileInfo, QDir, und Das Qt Resource System.

Dokumentation der Mitgliedsfunktionen

QFile::QFile()

Konstruiert ein QFile-Objekt.

[explicit] QFile::QFile(QObject *parent)

Konstruiert ein neues Dateiobjekt mit der angegebenen parent.

QFile::QFile(const QString &name)

Konstruiert ein neues File-Objekt, um die Datei mit der angegebenen name zu repräsentieren.

Hinweis: In Versionen bis einschließlich Qt 6.8 ist dieser Konstruktor aus Gründen der Abwärtskompatibilität implizit. Ab Qt 6.9 ist dieser Konstruktor bedingungslos explicit. Benutzer können diesen Konstruktor auch in früheren Versionen von Qt zu explicit machen, indem sie das Makro QT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH definieren, bevor sie einen Qt-Header einfügen.

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

Konstruiert ein neues File-Objekt, um die Datei mit der angegebenen name zu repräsentieren.

Hinweis: In Versionen bis einschließlich Qt 6.8 ist dieser Konstruktor aus Gründen der Abwärtskompatibilität implizit. Ab Qt 6.9 ist dieser Konstruktor bedingungslos explicit. Benutzer können diesen Konstruktor auch in früheren Versionen von Qt zu explicit machen, indem sie das Makro QT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH definieren, bevor sie einen Qt-Header einfügen.

Diese Funktion wurde in Qt 6.0 eingeführt.

QFile::QFile(const QString &name, QObject *parent)

Konstruiert ein neues Dateiobjekt mit dem angegebenen parent, um die Datei mit dem angegebenen name zu repräsentieren.

[since 6.0] QFile::QFile(const std::filesystem::path &name, QObject *parent)

Konstruiert ein neues Dateiobjekt mit der angegebenen parent, um die Datei mit der angegebenen name zu repräsentieren.

Diese Funktion wurde in Qt 6.0 eingeführt.

[virtual noexcept] QFile::~QFile()

Zerstört das Dateiobjekt und schließt es, falls erforderlich.

bool QFile::copy(const QString &newName)

Kopiert die Datei mit dem Namen fileName() nach newName.

Diese Datei wird geschlossen, bevor sie kopiert wird.

Handelt es sich bei der kopierten Datei um einen symbolischen Link (Symlink), wird die Datei kopiert, auf die er verweist, nicht der Link selbst. Mit Ausnahme der Berechtigungen, die kopiert werden, werden keine anderen Metadaten der Datei kopiert.

Gibt bei Erfolg true zurück, andernfalls false.

Beachten Sie, dass copy() false zurückgibt, wenn eine Datei mit dem Namen newName bereits existiert. Das bedeutet, dass QFile nicht überschrieben wird.

Hinweis: Unter Android wird dieser Vorgang noch nicht für content Schema-URIs unterstützt.

Siehe auch setFileName().

[since 6.0] bool QFile::copy(const std::filesystem::path &newName)

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.0 eingeführt.

[static] bool QFile::copy(const QString &fileName, const QString &newName)

Dies ist eine überladene Funktion.

Kopiert die Datei mit dem Namen fileName nach newName.

Diese Datei wird geschlossen, bevor sie kopiert wird.

Wenn die kopierte Datei ein symbolischer Link (Symlink) ist, wird die Datei kopiert, auf die er verweist, nicht der Link selbst. Mit Ausnahme der Berechtigungen, die kopiert werden, werden keine anderen Metadaten der Datei kopiert.

Gibt bei Erfolg true zurück, andernfalls false.

Beachten Sie, dass copy() false zurückgibt, wenn eine Datei mit dem Namen newName bereits existiert. Das bedeutet, dass QFile nicht überschrieben wird.

Hinweis: Unter Android wird dieser Vorgang noch nicht für content Schema-URIs unterstützt.

Siehe auch rename().

[static] QString QFile::decodeName(const QByteArray &localFileName)

Dies macht die Umkehrung von QFile::encodeName() mit localFileName.

Siehe auch encodeName().

[static] QString QFile::decodeName(const char *localFileName)

Dies ist eine überladene Funktion.

Gibt die Unicode-Version des angegebenen localFileName zurück. Siehe encodeName() für Details.

[static] QByteArray QFile::encodeName(const QString &fileName)

Konvertiert fileName in eine 8-Bit-Kodierung, die Sie in nativen APIs verwenden können. Unter Windows ist die Kodierung diejenige der aktiven Windows-Codepage (ANSI). Auf anderen Plattformen ist dies UTF-8, für macOS in dekomponierter Form (NFD).

Siehe auch decodeName().

[static] bool QFile::exists(const QString &fileName)

Gibt true zurück, wenn die durch fileName angegebene Datei existiert; andernfalls wird false zurückgegeben.

Hinweis: Wenn fileName ein Symlink ist, der auf eine nicht existierende Datei zeigt, wird false zurückgegeben.

bool QFile::exists() const

Dies ist eine überladene Funktion.

Gibt true zurück, wenn die durch fileName() angegebene Datei existiert; andernfalls gibt sie false zurück.

Siehe auch fileName() und setFileName().

[override virtual] QString QFile::fileName() const

Reimplements: QFileDevice::fileName() const.

Gibt den Namen zurück, der durch setFileName() oder die QFile Konstruktoren gesetzt wurde.

Siehe auch setFileName() und QFileInfo::fileName().

[since 6.0] std::filesystem::path QFile::filesystemFileName() const

Gibt fileName() als std::filesystem::path zurück.

Diese Funktion wurde in Qt 6.0 eingeführt.

[since 6.3] std::filesystem::path QFile::filesystemSymLinkTarget() const

Gibt symLinkTarget() als std::filesystem::path zurück.

Diese Funktion wurde in Qt 6.3 eingeführt.

[static, since 6.3] std::filesystem::path QFile::filesystemSymLinkTarget(const std::filesystem::path &fileName)

Gibt symLinkTarget() als std::filesystem::path von fileName zurück.

Diese Funktion wurde in Qt 6.3 eingeführt.

Erzeugt einen Link mit dem Namen linkName, der auf die Datei verweist, die gerade durch fileName() angegeben wird. Was ein Link ist, hängt vom zugrunde liegenden Dateisystem ab (sei es eine Verknüpfung unter Windows oder ein symbolischer Link unter Unix). Gibt bei Erfolg true zurück, andernfalls false.

Diese Funktion überschreibt keine bereits vorhandene Entität im Dateisystem; in diesem Fall gibt link() false zurück und setzt error() auf RenameError.

Hinweis: Um eine gültige Verknüpfung unter Windows zu erstellen, muss linkName eine .lnk Dateierweiterung haben.

Siehe auch setFileName().

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.0 eingeführt.

Dies ist eine überladene Funktion.

Erzeugt einen Link mit dem Namen linkName, der auf die Datei fileName zeigt. Was ein Link ist, hängt vom zugrunde liegenden Dateisystem ab (sei es eine Verknüpfung unter Windows oder ein symbolischer Link unter Unix). Gibt bei Erfolg true zurück, andernfalls false.

Siehe auch link().

bool QFile::moveToTrash()

Verschiebt die durch fileName() angegebene Datei in den Papierkorb. Gibt bei Erfolg true zurück und setzt fileName() auf den Pfad, unter dem die Datei im Papierkorb zu finden ist; andernfalls wird false zurückgegeben.

Die Zeit für die Ausführung dieser Funktion ist unabhängig von der Größe der zu löschenden Datei. Wenn diese Funktion für ein Verzeichnis aufgerufen wird, kann sie proportional zur Anzahl der zu löschenden Dateien sein. Wenn die aktuelle fileName() auf einen symbolischen Link zeigt, wird diese Funktion den Link in den Papierkorb verschieben und ihn möglicherweise zerstören, nicht das Ziel des Links.

Diese Funktion verwendet die Windows- und macOS-APIs, um den Löschvorgang auf diesen beiden Betriebssystemen durchzuführen. Auf anderen Systemen (Unix-Systemen) implementiert diese Funktion die FreeDesktop.org Trash-Spezifikation Version 1.0.

Hinweis: Bei der Verwendung der FreeDesktop.org Trash-Implementierung schlägt diese Funktion fehl, wenn sie nicht in der Lage ist, die Dateien mit Hilfe von Dateiumbenennungen und Hardlinks an den Speicherort im Papierkorb zu verschieben. Dies ist der Fall, wenn sich die zu löschende Datei auf einem Volume (Einhängepunkt) befindet, auf dem der aktuelle Benutzer keine Berechtigung zum Erstellen des Verzeichnisses .Trash hat, oder bei einigen ungewöhnlichen Dateisystemtypen oder -konfigurationen (z. B. Subvolumes, die selbst keine Einhängepunkte sind).

Hinweis: Auf Systemen, auf denen die System-API den Speicherort der Datei im Papierkorb nicht meldet, wird fileName() auf die Zeichenfolge null gesetzt, sobald die Datei verschoben wurde. Auf Systemen, die keinen Mülleimer haben, gibt diese Funktion immer false zurück.

[static] bool QFile::moveToTrash(const QString &fileName, QString *pathInTrash = nullptr)

Dies ist eine überladene Funktion.

Verschiebt die durch fileName angegebene Datei in den Papierkorb. Gibt bei Erfolg true zurück und setzt pathInTrash (falls angegeben) auf den Pfad, unter dem die Datei im Papierkorb gefunden werden kann; andernfalls gibt sie false zurück.

Die Zeit für die Ausführung dieser Funktion ist unabhängig von der Größe der zu löschenden Datei. Wenn diese Funktion für ein Verzeichnis aufgerufen wird, kann sie proportional zur Anzahl der zu löschenden Dateien sein. Wenn die aktuelle fileName() auf einen symbolischen Link zeigt, wird diese Funktion den Link in den Papierkorb verschieben und ihn möglicherweise zerstören, nicht das Ziel des Links.

Diese Funktion verwendet die Windows- und macOS-APIs, um den Löschvorgang auf diesen beiden Betriebssystemen durchzuführen. In anderen Fällen (Unix-Systeme) implementiert diese Funktion die FreeDesktop.org Trash-Spezifikation Version 1.0.

Hinweis: Bei der Verwendung der FreeDesktop.org Trash-Implementierung schlägt diese Funktion fehl, wenn sie nicht in der Lage ist, die Dateien mit Hilfe von Dateiumbenennungen und Hardlinks an den Speicherort im Papierkorb zu verschieben. Dies ist der Fall, wenn sich die zu löschende Datei auf einem Volume (Einhängepunkt) befindet, auf dem der aktuelle Benutzer keine Berechtigung zum Erstellen des Verzeichnisses .Trash hat, oder bei einigen ungewöhnlichen Dateisystemtypen oder -konfigurationen (z. B. Subvolumes, die selbst keine Einhängepunkte sind).

Hinweis: Auf Systemen, auf denen die System-API den Pfad der Datei im Papierkorb nicht meldet, wird pathInTrash auf die Zeichenfolge null gesetzt, sobald die Datei verschoben wurde. Auf Systemen, die keinen Mülleimer haben, gibt diese Funktion immer false zurück.

[override virtual] bool QFile::open(QIODeviceBase::OpenMode mode)

Reimplements: QIODevice::open(QIODeviceBase::OpenMode mode).

Öffnet die Datei mit den Flags mode und gibt bei Erfolg true zurück, andernfalls false.

Die Flags für mode müssen QIODeviceBase::ReadOnly, WriteOnly oder ReadWrite enthalten. Sie können auch zusätzliche Flags wie Text und Unbuffered enthalten.

Hinweis: Wenn die betreffende Datei im Modus WriteOnly oder ReadWrite noch nicht existiert, versucht diese Funktion, eine neue Datei zu erstellen, bevor sie geöffnet wird. Die Datei wird mit dem Modus 0666 erstellt, der auf POSIX-Systemen durch die umask maskiert wird, und mit den vom übergeordneten Verzeichnis geerbten Berechtigungen auf Windows. Unter Android wird erwartet, dass Sie Zugriffsrechte auf das übergeordnete Verzeichnis des Dateinamens haben, andernfalls ist es nicht möglich, diese nicht existierende Datei zu erstellen.

Siehe auch QT_USE_NODISCARD_FILE_OPEN und setFileName().

[since 6.3] bool QFile::open(QIODeviceBase::OpenMode mode, QFileDevice::Permissions permissions)

Dies ist eine überladene Funktion.

Wenn die Datei nicht existiert und mode ihre Erstellung impliziert, wird sie mit dem angegebenen permissions erstellt.

Auf POSIX-Systemen werden die tatsächlichen Berechtigungen durch den Wert von umask beeinflusst.

Unter Windows werden die Berechtigungen durch ACLs emuliert. Diese ACLs können in nicht-kanonischer Reihenfolge sein, wenn der Gruppe weniger Rechte als anderen gewährt werden. Dateien und Verzeichnisse mit solchen Berechtigungen erzeugen Warnungen, wenn die Registerkarte Sicherheit im Dialogfeld Eigenschaften geöffnet wird. Wenn Sie der Gruppe alle Rechte gewähren, die anderen gewährt werden, werden solche Warnungen vermieden.

Diese Funktion wurde in Qt 6.3 eingeführt.

Siehe auch QIODevice::OpenMode, setFileName(), und QT_USE_NODISCARD_FILE_OPEN.

bool QFile::open(FILE *fh, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)

Dies ist eine überladene Funktion.

Öffnet das vorhandene Dateihandle fh in der angegebenen mode. handleFlags kann verwendet werden, um zusätzliche Optionen anzugeben. Gibt bei Erfolg true zurück, andernfalls false.

Beispiel:

#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();
}

Wenn ein QFile mit dieser Funktion geöffnet wird, wird das Verhalten von close() durch das AutoCloseHandle-Flag gesteuert. Wenn AutoCloseHandle angegeben ist und diese Funktion erfolgreich ist, dann schließt der Aufruf von close() das übernommene Handle. Andernfalls schließt close() die Datei nicht wirklich, sondern leert sie nur.

Warnung:

  1. Wenn fh nicht auf eine reguläre Datei verweist, z. B. stdin, stdout oder stderr, können Sie seek() möglicherweise nicht verwenden. size() gibt in diesen Fällen 0 zurück. Siehe QIODevice::isSequential() für weitere Informationen.
  2. Da diese Funktion die Datei ohne Angabe des Dateinamens öffnet, können Sie diese QFile nicht mit einer QFileInfo verwenden.

Hinweis für die Windows-Plattform

fh muss im Binärmodus geöffnet werden (d.h. der Modus-String muss 'b' enthalten, wie in "rb" oder "wb"), wenn auf Dateien und andere Random-Access-Geräte zugegriffen wird. Qt übersetzt die Zeilenende-Zeichen, wenn Sie QIODevice::Text an mode übergeben. Sequentielle Geräte, wie stdin und stdout, sind von dieser Einschränkung nicht betroffen.

Sie müssen die Unterstützung für Konsolenanwendungen aktivieren, um die Streams stdin, stdout und stderr an der Konsole verwenden zu können. Fügen Sie dazu die folgende Erklärung in die Projektdatei Ihrer Anwendung ein:

CONFIG += console

Siehe auch close() und QT_USE_NODISCARD_FILE_OPEN.

bool QFile::open(int fd, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)

Dies ist eine überladene Funktion.

Öffnet den vorhandenen Dateideskriptor fd in der angegebenen mode. handleFlags kann verwendet werden, um zusätzliche Optionen anzugeben. Gibt bei Erfolg true zurück, andernfalls false.

Wenn ein QFile mit dieser Funktion geöffnet wird, wird das Verhalten von close() durch das AutoCloseHandle-Flag gesteuert. Wenn AutoCloseHandle angegeben ist und diese Funktion erfolgreich ist, dann schließt der Aufruf von close() das übernommene Handle. Andernfalls schließt close() die Datei nicht wirklich, sondern leert sie nur.

Warnung: Wenn fd keine reguläre Datei ist, z. B. 0 (stdin), 1 (stdout) oder 2 (stderr), können Sie möglicherweise seek() nicht aufrufen. In diesen Fällen gibt size() 0 zurück. Siehe QIODevice::isSequential() für weitere Informationen.

Warnung: Da diese Funktion die Datei ohne Angabe des Dateinamens öffnet, können Sie diese QFile nicht mit einer QFileInfo verwenden.

Siehe auch close() und QT_USE_NODISCARD_FILE_OPEN.

[override virtual] QFileDevice::Permissions QFile::permissions() const

Reimplements: QFileDevice::permissions() const.

Siehe auch setPermissions().

[static] QFileDevice::Permissions QFile::permissions(const QString &fileName)

Dies ist eine überladene Funktion.

Gibt die komplette ODER-verknüpfte Kombination von QFile::Permission für fileName zurück.

[static, since 6.0] QFileDevice::Permissions QFile::permissions(const std::filesystem::path &filename)

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.0 eingeführt.

bool QFile::remove()

Entfernt die durch fileName() angegebene Datei. Gibt bei Erfolg true zurück, andernfalls false.

Die Datei wird geschlossen, bevor sie entfernt wird.

Siehe auch setFileName().

[static] bool QFile::remove(const QString &fileName)

Dies ist eine überladene Funktion.

Entfernt die durch die angegebene fileName spezifizierte Datei.

Gibt bei Erfolg true zurück, andernfalls false.

Siehe auch remove().

bool QFile::rename(const QString &newName)

Benennt die aktuell durch fileName() angegebene Datei in newName um. Bei Erfolg wird true zurückgegeben, andernfalls false.

Wenn eine Datei mit dem Namen newName bereits existiert, gibt rename() false zurück (d.h. QFile wird nicht überschrieben).

Die Datei wird geschlossen, bevor sie umbenannt wird.

Wenn der Umbenennungsvorgang fehlschlägt, versucht Qt, den Inhalt dieser Datei nach newName zu kopieren und diese Datei dann zu entfernen, wobei nur newName erhalten bleibt. Wenn dieser Kopiervorgang fehlschlägt oder diese Datei nicht entfernt werden kann, wird die Zieldatei newName entfernt, um den alten Zustand wiederherzustellen.

Siehe auch setFileName().

[since 6.0] bool QFile::rename(const std::filesystem::path &newName)

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.0 eingeführt.

[static] bool QFile::rename(const QString &oldName, const QString &newName)

Dies ist eine überladene Funktion.

Benennt die Datei oldName in newName um. Gibt bei Erfolg true zurück, andernfalls false.

Wenn eine Datei mit dem Namen newName bereits existiert, gibt rename() false zurück (d.h. QFile überschreibt sie nicht).

Siehe auch rename().

[override virtual] bool QFile::resize(qint64 sz)

Reimplements: QFileDevice::resize(qint64 sz).

[static] bool QFile::resize(const QString &fileName, qint64 sz)

Dies ist eine überladene Funktion.

Setzt fileName auf die Größe (in Bytes) sz. Gibt true zurück, wenn die Größenänderung erfolgreich war; andernfalls false. Wenn sz größer ist als fileName, werden die neuen Bytes auf 0 gesetzt, wenn sz kleiner ist, wird die Datei einfach abgeschnitten.

Warnung: Diese Funktion kann fehlschlagen, wenn die Datei nicht existiert.

Siehe auch resize().

void QFile::setFileName(const QString &name)

Legt die name der Datei fest. Der Name kann keinen Pfad, einen relativen Pfad oder einen absoluten Pfad haben.

Rufen Sie diese Funktion nicht auf, wenn die Datei bereits geöffnet wurde.

Wenn der Dateiname keinen Pfad oder einen relativen Pfad enthält, wird der Pfad verwendet, der zum Zeitpunkt des Aufrufs von open ( ) der aktuelle Verzeichnispfad der Anwendung ist.

Beispiel:

QFile file;
QDir::setCurrent("/tmp");
file.setFileName("readme.txt");
QDir::setCurrent("/home");
file.open(QIODevice::ReadOnly);      // opens "/home/readme.txt" under Unix

Beachten Sie, dass das Verzeichnis-Trennzeichen "/" für alle von Qt unterstützten Betriebssysteme funktioniert.

Siehe auch fileName(), QFileInfo, und QDir.

[since 6.0] void QFile::setFileName(const std::filesystem::path &name)

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.0 eingeführt.

[override virtual] bool QFile::setPermissions(QFileDevice::Permissions permissions)

Reimplements: QFileDevice::setPermissions(QFileDevice::Permissions permissions).

Setzt die Berechtigungen für die Datei auf den angegebenen permissions. Gibt true zurück, wenn erfolgreich, oder false, wenn die Berechtigungen nicht geändert werden können.

Warnung: Diese Funktion manipuliert keine ACLs, was ihre Wirksamkeit einschränken kann.

Siehe auch permissions() und setFileName().

[static] bool QFile::setPermissions(const QString &fileName, QFileDevice::Permissions permissions)

Dies ist eine überladene Funktion.

Setzt die Berechtigungen für die Datei fileName auf permissions.

[static, since 6.0] bool QFile::setPermissions(const std::filesystem::path &filename, QFileDevice::Permissions permissionSpec)

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.0 eingeführt.

[override virtual] qint64 QFile::size() const

Reimplements: QFileDevice::size() const.

[static] QString QFile::symLinkTarget(const QString &fileName)

Gibt den absoluten Pfad der Datei oder des Verzeichnisses zurück, auf das der von fileName angegebene symbolische Link (oder die Verknüpfung unter Windows) verweist, oder gibt eine leere Zeichenfolge zurück, wenn fileName keinem symbolischen Link entspricht.

Dieser Name darf keine existierende Datei darstellen; er ist nur eine Zeichenkette. QFile::exists() gibt true zurück, wenn der Symlink auf eine existierende Datei verweist.

QString QFile::symLinkTarget() const

Dies ist eine überladene Funktion.

Gibt den absoluten Pfad der Datei oder des Verzeichnisses zurück, auf die ein Symlink (oder eine Verknüpfung unter Windows) zeigt, oder eine leere Zeichenkette, wenn das Objekt kein symbolischer Link ist.

Dieser Name darf keine existierende Datei darstellen; er ist nur eine Zeichenkette. QFile::exists() gibt true zurück, wenn der Symlink auf eine existierende Datei zeigt.

Siehe auch fileName() und setFileName().

© 2025 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.