Класс QTemporaryFile
Класс QTemporaryFile — это устройство ввода-вывода, работающее с временными файлами. Подробнее...
| Заголовок: | #include <QTemporaryFile> |
| qmake: | QT += core |
| Наследуется от: | QFile |
Примечание: Все функции в этом классе являются повторно входящими.
Открытые функции
| QTemporaryFile() | |
| QTemporaryFile(const QString &templateName) | |
| QTemporaryFile(QObject *parent) | |
| QTemporaryFile(const QString &templateName, QObject *parent) | |
| ~QTemporaryFile() | |
| bool | autoRemove() const |
| QString | fileTemplate() const |
| bool | open() |
| void | setAutoRemove(bool b) |
| void | setFileTemplate(const QString &name) |
Переопределённые открытые функции
| virtual QString | fileName() const |
- 15 открытых функций унаследовано от QFile
- 16 открытых функций унаследовано от QFileDevice
- 43 открытых функций унаследовано от QIODevice
- 32 открытых функций унаследовано от QObject
Статические открытые члены
| QTemporaryFile * | createNativeFile(QFile &file) |
| QTemporaryFile * | createNativeFile(const QString &fileName) |
- 12 статических открытых членов унаследовано от QFile
- 11 статических открытых членов унаследовано от QObject
Переопределённые защищённые функции
| virtual bool | open(OpenMode flags) |
- 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().
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.
[virtual] QString QTemporaryFile::fileName() const
Переопределено из QFileDevice::fileName().
Возвращает полное уникальное имя файла, хранящего объект QTemporaryFile. Эта строка равна null до открытия QTemporaryFile, после чего она будет содержать fileTemplate() плюс дополнительные символы для обеспечения уникальности.
См. также fileTemplate().
QString QTemporaryFile::fileTemplate() const
Возвращает установленную шаблон файла. Шаблон файла по умолчанию называется qcoreappname.XXXXXX и расположен в QDir::tempPath().
См. также setFileTemplate().
bool QTemporaryFile::open()
QTemporaryFile всегда открывается в режиме QIODevice::ReadWrite, что позволяет легко получить доступ к данным в файле. Эта функция вернёт true при успехе и установит fileName() на уникальное имя файла.
См. также fileName().
[virtual protected] bool QTemporaryFile::open(OpenMode flags)
Переопределено из QIODevice::open().
Создаёт уникальное имя файла для временного файла и открывает его. Уникальное имя можно получить позже, вызвав fileName(). Гарантируется, что файл был создан этой функцией (т.е. он никогда не существовал ранее).
void QTemporaryFile::setAutoRemove(bool b)
Устанавливает QTemporaryFile в режим автоматического удаления, если b равно true.
Режим автоматического удаления включен по умолчанию.
См. также 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.9/qtemporaryfile.html