Класс QTemporaryFile
Класс QTemporaryFile — это устройство ввода-вывода, работающее с временными файлами. Подробнее...
| Заголовок: | #include <QTemporaryFile> |
| qmake: | QT += core |
| Наследует: | QFile |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые функции
| QTemporaryFile(const QString &templateName, QObject *parent) | |
| QTemporaryFile(QObject *parent) | |
| QTemporaryFile(const QString &templateName) | |
| QTemporaryFile() | |
| virtual | ~QTemporaryFile() |
| bool | autoRemove() const |
| QString | fileTemplate() const |
| bool | open() |
| void | setAutoRemove(bool b) |
| void | setFileTemplate(const QString &name) |
Переопределённые открытые функции
| virtual QString | fileName() const override |
Статические открытые члены
| QTemporaryFile * | createNativeFile(QFile &file) |
| QTemporaryFile * | createNativeFile(const QString &fileName) |
Переопределённые защищённые функции
| virtual bool | open(QIODevice::OpenMode flags) override |
Подробное описание
QTemporaryFile используется для безопасного создания уникальных временных файлов. Сам файл создаётся при вызове open(). Имя временного файла гарантируется уникальным (т.е. вы гарантированно не перезапишете существующий файл), и файл впоследствии будет удалён при уничтожении объекта QTemporaryFile. Это важный приём, который предотвращает повреждение данных для приложений, хранящих данные во временных файлах. Имя файла автоматически генерируется или создаётся на основе шаблона, переданного в конструктор QTemporaryFile.
Пример:
// 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. Переоткрытие QTemporaryFile после вызова close() безопасно. Пока объект QTemporaryFile не уничтожен, уникальный временный файл будет существовать и будет удерживаться открытым внутри QTemporaryFile.
Имя временного файла можно найти, вызвав fileName(). Обратите внимание, что это определено только после первого открытия файла; функция возвращает пустую строку до этого.
Временный файл будет иметь статическую часть имени и часть, рассчитанную на уникальность. Имя файла по умолчанию определяется из QCoreApplication::applicationName() (иначе qt_temp) и будет помещён в временную папку, возвращаемую QDir::tempPath(). Если вы укажете своё имя файла, относительный путь к файлу по умолчанию не будет помещён во временную директорию, но будет относительным к текущей рабочей директории.
Указанные имена файлов могут содержать следующий шаблон XXXXXX (шесть заглавных букв «X»), который будет заменён автоматически сгенерированной частью имени файла. Обратите внимание, что шаблон чувствителен к регистру. Если шаблон отсутствует в имени файла, QTemporaryFile добавляет сгенерированную часть к заданному имени файла.
См. также QDir::tempPath() и QFile.
Документация по членам-функциям
QTemporaryFile::QTemporaryFile(const QString &templateName, QObject *parent)
Конструирует QTemporaryFile с именем шаблона файла templateName и указанным parent. При открытии временного файла это будет использоваться для создания уникального имени файла.
Если templateName не содержит XXXXXX, то он будет автоматически добавлен и используется как динамическая часть имени файла.
Если templateName — относительный путь, путь будет относительным к текущей рабочей директории. Вы можете использовать QDir::tempPath() для построения templateName, если хотите использовать временную директорию системы.
См. также open() и fileTemplate().
QTemporaryFile::QTemporaryFile(QObject *parent)
Конструирует QTemporaryFile (с заданным parent) используя в качестве шаблона файла имя приложения, возвращённое QCoreApplication::applicationName() (в противном случае qt_temp) и ".XXXXXX". Файл хранится во временной директории системы, QDir::tempPath().
См. также setFileTemplate().
QTemporaryFile::QTemporaryFile(const QString &templateName)
Конструирует QTemporaryFile с именем шаблона файла templateName. При открытии временного файла это будет использоваться для создания уникального имени файла.
Если templateName не содержит XXXXXX, то он будет автоматически добавлен и используется как динамическая часть имени файла.
Если templateName — относительный путь, путь будет относительным к текущей рабочей директории. Вы можете использовать QDir::tempPath() для построения templateName, если хотите использовать временную директорию системы.
См. также open() и fileTemplate().
QTemporaryFile::QTemporaryFile()
Конструирует QTemporaryFile используя в качестве шаблона файла имя приложения, возвращённое QCoreApplication::applicationName() (в противном случае qt_temp) и ".XXXXXX". Файл хранится во временной директории системы, QDir::tempPath().
См. также setFileTemplate() и QDir::tempPath().
[virtual] QTemporaryFile::~QTemporaryFile()
Уничтожает объект временного файла; файл автоматически закрывается, если необходимо, и если включён режим автоматического удаления, файл будет автоматически удалён.
См. также autoRemove().
bool QTemporaryFile::autoRemove() const
Возвращает true, если QTemporaryFile находится в режиме автоматического удаления. Режим автоматического удаления автоматически удалит файл с диска при уничтожении. Это упрощает создание объекта QTemporaryFile в стеке, заполнении его данными, чтении из него и, наконец, при возврате функции, автоматической очистке.
Автоматическое удаление включено по умолчанию.
См. также setAutoRemove() и remove().
[static] QTemporaryFile *QTemporaryFile::createNativeFile(QFile &file)
Если file ещё не является родным файлом, то QTemporaryFile создаётся во QDir::tempPath(), содержимое file копируется в него, и возвращается указатель на временный файл. Ничего не делает и возвращает 0 если file уже является родным файлом.
Например:
QFile f(":/resources/file.txt");
QTemporaryFile::createNativeFile(f); // Returns a pointer to a temporary file
QFile f("/users/qt/file.txt");
QTemporaryFile::createNativeFile(f); // Returns 0 См. также QFileInfo::isNativePath().
[static] QTemporaryFile *QTemporaryFile::createNativeFile(const QString &fileName)
Это перегруженная функция.
Работает с заданным fileName вместо существующего объекта QFile.
[override virtual] QString QTemporaryFile::fileName() const
Реализует: QFile::fileName() const.
Возвращает полное уникальное имя файла, используемого объектом QTemporaryFile. Эта строка равна null до открытия QTemporaryFile, после чего она будет содержать fileTemplate() плюс дополнительные символы для уникальности.
См. также fileTemplate().
QString QTemporaryFile::fileTemplate() const
Возвращает заданный шаблон имени файла. По умолчанию шаблон имени файла будет называться qcoreappname.XXXXXX и будет помещён в QDir::tempPath().
См. также setFileTemplate().
bool QTemporaryFile::open()
QTemporaryFile всегда открывается в режиме QIODevice::ReadWrite, что обеспечивает лёгкий доступ к данным в файле. Эта функция вернёт true при успехе и установит fileName() в уникальное имя файла.
См. также fileName().
[override virtual protected] bool QTemporaryFile::open(QIODevice::OpenMode flags)
Реализует: QFile::open(QIODevice::OpenMode mode).
Создаёт уникальное имя файла для временного файла и открывает его. Уникальное имя можно получить позднее, вызвав fileName(). Файл гарантированно будет создан этой функцией (т.е. он никогда ранее не существовал).
void QTemporaryFile::setAutoRemove(bool b)
Устанавливает режим автоматического удаления для QTemporaryFile, если b равно true.
Автоматическое удаление включено по умолчанию.
Если вы установили это свойство в false, убедитесь, что приложение предоставляет способ удаления файла после того, как он больше не нужен, включая передачу ответственности другому процессу. Всегда используйте функцию fileName() для получения имени и никогда не пытайтесь угадать имя, которое сгенерировал QTemporaryFile.
В некоторых системах, если fileName() не вызывается перед закрытием файла, временный файл может быть удалён независимо от состояния этого свойства. Не следует полагаться на это поведение, поэтому код приложения должен либо вызвать fileName(), либо оставить функциональность автоматического удаления включённой.
См. также autoRemove() и remove().
void QTemporaryFile::setFileTemplate(const QString &name)
Устанавливает статическую часть имени файла в name. Если шаблон имени файла содержит XXXXXX, это автоматически будет заменено уникальной частью имени файла, в противном случае имя файла будет определено автоматически на основе указанной статической части.
Если name содержит относительный путь к файлу, путь будет относительным к текущей рабочей директории. Вы можете использовать QDir::tempPath() для построения name, если хотите использовать временную директорию системы.
См. также fileTemplate().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qtemporaryfile.html