Spec-Zone.ru › Qt 6.0

Класс 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.0/qtemporaryfile.html

Spec-Zone.ru

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