Класс QTemporaryFile
Класс QTemporaryFile — это устройство ввода-вывода, работающее с временными файлами. Подробнее...
| Заголовок: | #include <QTemporaryFile> |
| qmake: | QT += core |
| Наследует: | QFile |
Примечание: Все функции в этом классе являются перевключенными.
Открытые функции
| QTemporaryFile() | |
| QTemporaryFile(const QString &templateName) | |
| QTemporaryFile(QObject *parent) | |
| QTemporaryFile(const QString &templateName, QObject *parent) | |
| virtual | ~QTemporaryFile() |
| bool | autoRemove() const |
| QString | fileTemplate() const |
| bool | open() |
| void | setAutoRemove(bool b) |
| void | setFileTemplate(const QString &name) |
Переопределенные открытые функции
| virtual QString | fileName() const override |
- 15 открытых функций унаследовано от QFile
- 18 открытых функций унаследовано от QFileDevice
- 44 открытых функций унаследовано от QIODevice
- 32 открытых функций унаследовано от QObject
Статические открытые члены
| QTemporaryFile * | createNativeFile(QFile &file) |
| QTemporaryFile * | createNativeFile(const QString &fileName) |
- 12 статических открытых членов унаследовано от QFile
- 11 статических открытых членов унаследовано от QObject
Переопределенные защищенные функции
| virtual bool | open(QIODevice::OpenMode flags) override |
- 3 защищенных функций унаследовано от QFileDevice
- 5 защищенных функций унаследовано от QIODevice
- 9 защищенных функций унаследовано от QObject
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 1 открытый слот унаследован от QObject
- 6 сигналов унаследовано от QIODevice
- 2 сигналов унаследовано от QObject
- 3 защищенных функций унаследовано от QFileDevice
- 5 защищенных функций унаследовано от QIODevice
- 9 защищенных функций унаследовано от QObject
Подробное описание
Класс QTemporaryFile — это устройство ввода-вывода, работающее с временными файлами.
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()
Конструктор QTemporaryFile использует в качестве шаблона имени файла имя приложения, возвращаемое QCoreApplication::applicationName() (в противном случае qt_temp), за которым следует ".XXXXXX". Файл хранится во временной директории системы, QDir::tempPath().
См. также setFileTemplate() и QDir::tempPath().
QTemporaryFile::QTemporaryFile(const QString &templateName)
Конструктор QTemporaryFile с шаблоном имени файла templateName. При открытии временного файла будет использоваться уникальное имя файла.
Если 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, QObject *parent)
Конструктор QTemporaryFile с шаблоном имени файла templateName и указанным parent. При открытии временного файла будет использоваться уникальное имя файла.
Если templateName не содержит XXXXXX, оно будет автоматически добавлено и использовано как динамическая часть имени файла.
Если templateName — относительный путь, путь будет относительным к текущей рабочей директории. Вы можете использовать QDir::tempPath() для построения templateName, если хотите использовать временную директорию системы.
См. также open() и fileTemplate().
[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().
Возвращает полное уникальное имя файла, на котором базируется объект 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().
Создаёт уникальное имя файла для временного файла и открывает его. Уникальное имя можно получить позже, вызвав 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/archives/qt-5.11/qtemporaryfile.html