Spec-Zone.ru › Qt

Класс QTemporaryFile

Класс QTemporaryFile — это устройство ввода-вывода, которое работает с временными файлами. Подробнее...

Заголовок: #include <QTemporaryFile>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
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(QIODeviceBase::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 добавляет сгенерированную часть к предоставленному имени файла.

Примечание: В Linux QTemporaryFile попытается создать безымянный временный файл. Если это удастся, open() вернет true, но exists() вернет false. Если вы вызовете fileName() или любую функцию, которая вызывает ее, 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(QIODeviceBase::OpenMode flags)

Переопределяет: QFile::open(QIODeviceBase::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-6.2/qtemporaryfile.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API