Sur cette page

QTemporaryFile Class

La classe `QTemporaryFile` est un périphérique d'E/S qui gère les fichiers temporaires. En savoir plus...

En-tête : #include <QTemporaryFile>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Hérite de : QFile

Remarque : toutes les fonctions de cette classe sont réentrantes.

Fonctions publiques

QTemporaryFile()
QTemporaryFile(QObject *parent)
QTemporaryFile(const QString &templateName)
QTemporaryFile(const QString &templateName, QObject *parent)
(since 6.7) QTemporaryFile(const std::filesystem::path &templateName, QObject *parent = nullptr)
virtual ~QTemporaryFile()
bool autoRemove() const
QString fileTemplate() const
bool open()
bool rename(const QString &newName)
(since 6.7) bool rename(const std::filesystem::path &newName)
(since 6.11) bool renameOverwrite(const QString &newName)
(since 6.11) bool renameOverwrite(const std::filesystem::path &newName)
void setAutoRemove(bool b)
void setFileTemplate(const QString &templateName)
(since 6.7) void setFileTemplate(const std::filesystem::path &name)

Fonctions publiques réimplémentées

virtual QString fileName() const override

Membres publics statiques

QTemporaryFile *createNativeFile(QFile &file)
QTemporaryFile *createNativeFile(const QString &fileName)
(since 6.7) QTemporaryFile *createNativeFile(const std::filesystem::path &fileName)

Fonctions protégées réimplémentées

virtual bool open(QIODeviceBase::OpenMode mode) override

Description détaillée

open() permet de créer des fichiers temporaires uniques en toute sécurité. Le fichier lui-même est créé en appelant la fonction (). Le nom du fichier temporaire est garanti unique (c'est-à-dire qu'il est garanti que vous n'écraserez pas un fichier existant), et le fichier sera ensuite supprimé lors de la destruction de l'objet QTemporaryFile. Il s'agit d'une technique importante qui permet d'éviter la corruption des données pour les applications qui stockent des données dans des fichiers temporaires. Le nom du fichier est soit généré automatiquement, soit créé à partir d'un modèle, qui est transmis au constructeur de QTemporaryFile.

Exemple :

// Within a function/method...

QTemporaryFile file;
if (file.open()) {
    // file.fileName() returns the unique file name
}

// The QTemporaryFile destructor removes the temporary file
// as it goes out of scope.

La réouverture d’un QTemporaryFile après l’appel de ` close()` est sans risque. Tant que l’objet `QTemporaryFile` lui-même n’est pas détruit, le fichier temporaire unique existera et restera ouvert en interne par `QTemporaryFile`.

Le nom du fichier temporaire peut être obtenu en appelant la fonction ` fileName()`. Notez que celui-ci n’est défini qu’après la première ouverture du fichier ; avant cela, la fonction renvoie une chaîne vide.

Un fichier temporaire comporte une partie statique du nom et une partie calculée pour être unique. Le nom de fichier par défaut sera déterminé à partir de ` QCoreApplication::applicationName()` (ou ` qt_temp` dans le cas contraire) et sera placé dans le chemin temporaire renvoyé par ` QDir::tempPath()`. Si vous spécifiez votre propre nom de fichier, un chemin de fichier relatif ne sera pas placé par défaut dans le répertoire temporaire, mais sera relatif au répertoire de travail actuel.

Il est important de spécifier le répertoire correct si la fonction rename() doit être appelée, car QTemporaryFile ne peut renommer des fichiers que sur le même volume / système de fichiers que celui sur lequel le fichier temporaire a été créé.

Le nom de fichier (la partie située après le dernier séparateur de chemin d’accès dans le modèle de fichier spécifié) peut contenir la séquence spéciale "XXXXXX" (au moins six caractères en majuscules "X" ), qui sera remplacée par la partie générée automatiquement du nom de fichier. Si le nom de fichier ne contient pas "XXXXXX", QTemporaryFile ajoutera la partie générée à la fin du nom de fichier. Seule la dernière occurrence de « "XXXXXX" » sera prise en compte.

Remarque : sous Linux, QTemporaryFile tentera de créer des fichiers temporaires sans nom. Si cette opération aboutit, la fonction open() renverra true, mais exists() renverra false. Si vous appelez fileName() ou toute fonction qui l'appelle, QTemporaryFile attribuera un nom au fichier ; la plupart des applications ne remarqueront donc aucune différence.

Voir également QDir::tempPath() et QFile.

Documentation des fonctions membres

QTemporaryFile::QTemporaryFile()

Crée un objet `QTemporaryFile`.

Le modèle de nom de fichier par défaut est déterminé à partir du nom de l'application tel que renvoyé par QCoreApplication::applicationName() (ou "qt_temp" si le nom de l'application est vide), suivi de ".XXXXXX". Le fichier est stocké dans le répertoire temporaire du système, tel que renvoyé par QDir::tempPath().

Voir également setFileTemplate(), fileTemplate(), fileName() et QDir::tempPath().

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

Crée un objet `QTemporaryFile` à partir de l'parent` fourni.

Le modèle de nom de fichier par défaut est déterminé à partir du nom de l'application tel qu'il est renvoyé par QCoreApplication::applicationName() (ou "qt_temp" si le nom de l'application est vide), suivi de ".XXXXXX". Le fichier est stocké dans le répertoire temporaire du système, tel qu'il est renvoyé par QDir::tempPath().

Voir également setFileTemplate().

[explicit] QTemporaryFile::QTemporaryFile(const QString &templateName)

Crée un objet `QTemporaryFile` en utilisant ` templateName ` comme modèle de nom de fichier.

À l'ouverture du fichier temporaire, templateName sera utilisé pour créer un nom de fichier unique.

Si le nom de fichier (la partie située après le dernier séparateur de chemin de répertoire dans templateName) ne contient pas "XXXXXX", celui-ci sera ajouté automatiquement.

"XXXXXX" sera remplacé par la partie dynamique du nom de fichier, calculée de manière à être unique.

Si templateName est un chemin relatif, celui-ci sera relatif au répertoire de travail actuel. Vous pouvez utiliser QDir::tempPath() pour construire templateName si vous souhaitez utiliser le répertoire temporaire du système.

Il est important de spécifier le répertoire correct si la fonction ` rename()` est appelée, car `QTemporaryFile` ne peut renommer que les fichiers situés sur le même volume ou système de fichiers que celui sur lequel le fichier temporaire a été créé.

Voir également open() et fileTemplate().

QTemporaryFile::QTemporaryFile(const QString &templateName, QObject *parent)

Crée un objet `QTemporaryFile` en utilisant l'parent spécifiée et ` templateName ` comme modèle de nom de fichier.

À l’ouverture du fichier temporaire, templateName sera utilisé pour créer un nom de fichier unique.

Si le nom de fichier (la partie située après le dernier séparateur de chemin de répertoire dans templateName) ne contient pas "XXXXXX", celui-ci sera ajouté automatiquement.

"XXXXXX" sera remplacé par la partie dynamique du nom de fichier, calculée pour être unique.

Si templateName est un chemin relatif, celui-ci sera relatif au répertoire de travail actuel. Vous pouvez utiliser ` QDir::tempPath()` pour construire ` templateName ` si vous souhaitez utiliser le répertoire temporaire du système. Il est important de spécifier le répertoire correct si la fonction ` rename()` est appelée, car `QTemporaryFile` ne peut renommer des fichiers que sur le même volume ou système de fichiers que celui sur lequel le fichier temporaire a été créé.

Voir également open() et fileTemplate().

[explicit, since 6.7] QTemporaryFile::QTemporaryFile(const std::filesystem::path &templateName, QObject *parent = nullptr)

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.7.

[virtual noexcept] QTemporaryFile::~QTemporaryFile()

Supprime l'objet fichier temporaire ; le fichier est automatiquement fermé si nécessaire et, en mode de suppression automatique, il est automatiquement supprimé.

Voir également autoRemove().

bool QTemporaryFile::autoRemove() const

Renvoie ` true ` si l'QTemporaryFile est en mode de suppression automatique. Le mode de suppression automatique supprime automatiquement le nom de fichier du disque lors de la destruction de l'objet. Cela facilite grandement la création de votre objet ` QTemporaryFile ` sur la pile : vous pouvez le remplir de données, y lire des informations, puis, au retour de la fonction, il se nettoie automatiquement.

Le mode de suppression automatique est activé par défaut.

Voir également setAutoRemove() et remove().

[static] QTemporaryFile *QTemporaryFile::createNativeFile(QFile &file)

Si file n'est pas déjà un fichier natif, alors un fichier QTemporaryFile est créé dans QDir::tempPath(), le contenu de file y est copié, et un pointeur vers le fichier temporaire est renvoyé. Ne fait rien et renvoie 0 si file est déjà un fichier natif.

Par exemple :

QFile f_pointer(":/resources/file.txt");
QTemporaryFile::createNativeFile(f_pointer); // Returns a pointer to a temporary file

QFile f0("/users/qt/file.txt");
QTemporaryFile::createNativeFile(f0); // Returns 0

Voir également QFileInfo::isNativePath().

[static] QTemporaryFile *QTemporaryFile::createNativeFile(const QString &fileName)

Fonctionne sur l'fileName fournie plutôt que sur un objet QFile existant.

Il s'agit d'une fonction surchargée.

[static, since 6.7] QTemporaryFile *QTemporaryFile::createNativeFile(const std::filesystem::path &fileName)

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.7.

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

Réimplémente : QFile::fileName() const.

Renvoie le nom de fichier complet et unique associé à l’objet ` QTemporaryFile `. Cette chaîne est nulle avant l’ouverture de l’ QTemporaryFile; par la suite, elle contiendra le résultat de ` fileTemplate()` ainsi que des caractères supplémentaires afin de la rendre unique.

Le nom de fichier renvoyé par cette méthode est relatif ou absolu selon que le modèle de nom de fichier utilisé pour construire cet objet (ou transmis à setFileTemplate()) est respectivement relatif ou absolu.

Voir également fileTemplate().

QString QTemporaryFile::fileTemplate() const

Renvoie le modèle de nom de fichier.

Le modèle de nom de fichier renvoyé par cette méthode sera relatif ou absolu selon que le modèle de nom de fichier utilisé pour construire cet objet (ou transmis à la fonction setFileTemplate()) est respectivement relatif ou absolu.

Voir également setFileTemplate(), fileName() et Default File Name Template.

bool QTemporaryFile::open()

Ouvre un fichier temporaire unique dans le système de fichiers en mode « QIODeviceBase::ReadWrite ». Renvoie « true » si le fichier a été ouvert avec succès ou s’il était déjà ouvert. Sinon, renvoie « false ».

Si elle est appelée pour la première fois, la fonction open() créera un nom de fichier unique à l’aide de la fonction fileTemplate(). Il est garanti que le fichier a été créé par cette fonction (c’est-à-dire qu’il n’a jamais existé auparavant).

Si un fichier est rouvert après l’appel de la fonction close(), c’est ce même fichier qui sera rouvert.

Voir également setFileTemplate() et QT_USE_NODISCARD_FILE_OPEN.

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

Réimplémente : QFile::open(mode QIODeviceBase::OpenMode).

Ouvre un fichier temporaire unique dans le système de fichiers avec les indicateurs de ` mode `. Renvoie ` true ` si le fichier a été ouvert avec succès ou s’il était déjà ouvert. Sinon, renvoie ` false`.

Si elle est appelée pour la première fois, la fonction open() créera un nom de fichier unique basé sur fileTemplate(), et l’ouvrira avec les indicateurs mode. Il est garanti que le fichier a été créé par cette fonction (c’est-à-dire qu’il n’a jamais existé auparavant).

Si un fichier est rouvert après l’appel de close(), ce même fichier sera rouvert avec les indicateurs mode.

Voir aussi setFileTemplate() et QT_USE_NODISCARD_FILE_OPEN.

bool QTemporaryFile::rename(const QString &newName)

Renomme le fichier temporaire actuel en « newName » et renvoie « true » en cas de réussite.

Cette fonction présente une différence importante par rapport à ` QFile::rename()` : elle n’effectuera pas de copie puis de suppression si l’appel système de bas niveau visant à renommer le fichier échoue, ce qui pourrait se produire si ` newName ` spécifie un fichier situé sur un volume ou un système de fichiers différent de celui sur lequel le fichier temporaire a été créé. En d’autres termes, ` QTemporaryFile ` ne prend en charge que le renommage atomique de fichiers.

Cette fonctionnalité est destinée à permettre la création du fichier de destination avec l’intégralité de son contenu déjà présent, afin qu’aucun autre processus ne puisse voir un fichier incomplet en cours d’écriture. La classe QSaveFile peut également être utilisée à des fins similaires, en particulier si le fichier de destination n’est pas temporaire.

Remarque : l’appel à rename() ne désactive pas autoRemove. Si vous souhaitez que le fichier renommé soit conservé, vous devez appeler setAutoRemove et le définir sur false après avoir appelé rename(). Sinon, le fichier sera supprimé lorsque l’objet QTemporaryFile sera détruit.

Cette fonction échouera si newName existe déjà. Pour le remplacer, utilisez plutôt renameOverwrite().

Voir également renameOverwrite(), QSaveFile, QSaveFile::commit() et QFile::rename().

[since 6.7] bool QTemporaryFile::rename(const std::filesystem::path &newName)

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.7.

[since 6.11] bool QTemporaryFile::renameOverwrite(const QString &newName)

Cette fonction est identique à ` rename()`, à la différence qu’elle remplace de manière atomique ` newName ` si celui-ci existe déjà, tout comme le fait ` QSaveFile::commit()`.

Renvoie « false » si le renommage n’a pas pu être effectué de manière atomique (par exemple, si le fichier temporaire et le nom du fichier cible se trouvent sur des systèmes de fichiers, des volumes ou des disques différents).

Cette fonction a été introduite dans Qt 6.11.

Voir également rename(), QSaveFile, QSaveFile::commit() et QFile::rename().

[since 6.11] bool QTemporaryFile::renameOverwrite(const std::filesystem::path &newName)

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.11.

void QTemporaryFile::setAutoRemove(bool b)

Active le mode de suppression automatique de l'QTemporaryFile si l'adresse b est true.

La suppression automatique est activée par défaut.

Si vous définissez cette propriété sur ` false`, assurez-vous que l’application prévoit un moyen de supprimer le fichier dès qu’il n’est plus nécessaire, y compris en transférant cette responsabilité à un autre processus. Utilisez toujours la fonction ` fileName()` pour obtenir le nom et n’essayez jamais de deviner le nom généré par ` QTemporaryFile `.

Sur certains systèmes, si la fonction ` fileName()` n’est pas appelée avant la fermeture du fichier, le fichier temporaire peut être supprimé quel que soit l’état de cette propriété. Il ne faut pas se fier à ce comportement ; le code de l’application doit donc soit appeler la fonction ` fileName()`, soit laisser la fonctionnalité de suppression automatique activée.

Voir également autoRemove() et remove().

void QTemporaryFile::setFileTemplate(const QString &templateName)

Définit le modèle de nom de fichier sur templateName.

Si le nom de fichier (la partie située après le dernier séparateur de chemin d’accès dans templateName) ne contient pas « "XXXXXX" », celui-ci sera ajouté automatiquement.

"XXXXXX" sera remplacé par la partie dynamique du nom de fichier, qui est calculée pour être unique.

Si templateName est un chemin relatif, celui-ci sera relatif au répertoire de travail actuel. Vous pouvez utiliser QDir::tempPath() pour construire templateName si vous souhaitez utiliser le répertoire temporaire du système. Il est important de spécifier le répertoire correct si la fonction rename() doit être appelée, car QTemporaryFile ne peut renommer que les fichiers situés sur le même volume / système de fichiers que celui sur lequel le fichier temporaire a été créé.

Voir également fileTemplate() et fileName().

[since 6.7] void QTemporaryFile::setFileTemplate(const std::filesystem::path &name)

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.7.

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