이 페이지에서

QTemporaryFile Class

QTemporaryFile 클래스는 임시 파일을 다루는 I/O 장치입니다. 더 보기...

헤더: #include <QTemporaryFile>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속: QFile

참고: 이 클래스의 모든 함수는 재진입 가능합니다.

공개 함수

QTemporaryFile()
QTemporaryFile(QObject *parent)
QTemporaryFile(const QString &templateName)
QTemporaryFile(const QString &templateName, QObject *parent)
(since 6.7) QTemporaryFile(const std::filesystem::path &templateName, QObject *parent = nullptr)
virtual ~QTemporaryFile()
bool autoRemove() const
QString fileTemplate() const
bool open()
bool rename(const QString &newName)
(since 6.7) bool rename(const std::filesystem::path &newName)
(since 6.11) bool renameOverwrite(const QString &newName)
(since 6.11) bool renameOverwrite(const std::filesystem::path &newName)
void setAutoRemove(bool b)
void setFileTemplate(const QString &templateName)
(since 6.7) void setFileTemplate(const std::filesystem::path &name)

재구현된 공용 함수

virtual QString fileName() const override

정적 공용 멤버

QTemporaryFile *createNativeFile(QFile &file)
QTemporaryFile *createNativeFile(const QString &fileName)
(since 6.7) QTemporaryFile *createNativeFile(const std::filesystem::path &fileName)

재구현된 보호 함수

virtual bool open(QIODeviceBase::OpenMode mode) 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.

close()를 호출한 후 QTemporaryFile을 다시 여는 것은 안전합니다. QTemporaryFile 객체 자체가 소멸되지 않는 한, 고유한 임시 파일은 계속 존재하며 QTemporaryFile에 의해 내부적으로 열린 상태로 유지됩니다.

임시 파일의 파일 이름은 ` fileName()`을 호출하여 확인할 수 있습니다. 이 함수는 파일이 처음 열린 후에만 정의된다는 점에 유의하십시오. 그 이전에는 이 함수가 빈 문자열을 반환합니다.

임시 파일 이름은 고정된 부분과 고유성을 보장하기 위해 계산된 부분으로 구성됩니다. 기본 파일 이름은 QCoreApplication::applicationName() (그렇지 않은 경우 qt_temp)에서 결정되며, QDir::tempPath()가 반환하는 임시 경로에 배치됩니다. 사용자 정의 파일 이름을 지정하는 경우, 상대 파일 경로는 기본적으로 임시 디렉터리에 배치되지 않고 현재 작업 디렉터리를 기준으로 상대 경로로 처리됩니다.

rename() 함수가 호출될 경우 올바른 디렉터리를 지정하는 것이 중요합니다. QTemporaryFile은 임시 파일 자체가 생성된 볼륨/파일 시스템 내의 파일에 대해서만 이름을 변경할 수 있기 때문입니다.

파일 이름(지정된 파일 템플릿에서 마지막 디렉터리 경로 구분자 뒤의 부분)에는 특수 시퀀스 "XXXXXX" (대문자 "X" 6자 이상)가 포함될 수 있으며, 이는 파일 이름의 자동 생성된 부분으로 대체됩니다. 파일 이름에 "XXXXXX" 가 포함되어 있지 않은 경우, QTemporaryFile은 생성된 부분을 파일 이름 뒤에 추가합니다. "XXXXXX" 는 마지막에 나타나는 것만 고려됩니다.

참고: 리눅스에서 QTemporaryFile은 이름이 지정되지 않은 임시 파일을 생성하려고 시도합니다. 이 작업이 성공하면 open()은 true를 반환하지만 exists()은 false를 반환합니다. fileName() 또는 이를 호출하는 함수를 호출하면 QTemporaryFile이 파일에 이름을 지정하므로, 대부분의 애플리케이션에서는 차이를 느끼지 못할 것입니다.

QDir::tempPath() 및 QFile도 참조하십시오 .

멤버 함수 설명서

QTemporaryFile::QTemporaryFile()

QTemporaryFile 객체를 생성합니다.

기본 파일 이름 템플릿은 QCoreApplication::applicationName()에서 반환된 애플리케이션 이름(애플리케이션 이름이 비어 있는 경우 "qt_temp" )에 ".XXXXXX" 를 덧붙여 결정됩니다. 이 파일은 QDir::tempPath()에서 반환된 시스템의 임시 디렉터리에 저장됩니다.

setFileTemplate(), fileTemplate(), fileName() 및 QDir::tempPath()도 참조하십시오 .

[explicit] QTemporaryFile::QTemporaryFile(QObject *parent)

지정된 ` parent`을 사용하여 `QTemporaryFile`을 생성합니다.

기본 파일 이름 템플릿은 QCoreApplication::applicationName() 함수가 반환하는 애플리케이션 이름(애플리케이션 이름이 비어 있는 경우 "qt_temp" ) 뒤에 ".XXXXXX" 를 붙여 결정됩니다. 이 파일은 QDir::tempPath() 함수가 반환하는 시스템의 임시 디렉터리에 저장됩니다.

setFileTemplate()도 참조하십시오 .

[explicit] QTemporaryFile::QTemporaryFile(const QString &templateName)

templateName 를 파일 이름 템플릿으로 사용하여 QTemporaryFile 객체를 생성합니다.

임시 파일을 열 때, templateName 을 사용하여 고유한 파일 이름을 생성합니다.

파일 이름( templateName 에서 마지막 디렉터리 경로 구분자 뒤의 부분)에 "XXXXXX" 이 포함되어 있지 않으면, 자동으로 추가됩니다.

"XXXXXX" 는 파일 이름의 동적 부분으로 대체되며, 이는 고유하도록 계산됩니다.

templateName 가 상대 경로인 경우, 경로는 현재 작업 디렉터리를 기준으로 합니다. 시스템의 임시 디렉터리를 사용하려면 QDir::tempPath()를 사용하여 templateName 를 구성할 수 있습니다.

rename() 함수가 호출될 경우 올바른 디렉터리를 지정하는 것이 중요합니다. QTemporaryFile은 임시 파일이 생성된 볼륨/파일 시스템 내에서만 파일 이름을 변경할 수 있기 때문입니다.

open() 및 fileTemplate()도 참조하십시오 .

QTemporaryFile::QTemporaryFile(const QString &templateName, QObject *parent)

지정된 ` parent`와 파일 이름 템플릿으로 ` templateName `을 사용하여 `QTemporaryFile` 객체를 생성합니다.

임시 파일을 열 때, templateName 가 고유한 파일 이름을 생성하는 데 사용됩니다.

파일 이름( templateName 의 마지막 디렉터리 경로 구분자 뒤의 부분)에 "XXXXXX" 이 포함되어 있지 않으면, 이 부분이 자동으로 추가됩니다.

"XXXXXX" 는 파일 이름의 동적 부분으로 대체되며, 이 부분은 고유하도록 계산됩니다.

templateName 가 상대 경로인 경우, 경로는 현재 작업 디렉터리를 기준으로 합니다. 시스템의 임시 디렉터리를 사용하려면 QDir::tempPath()를 사용하여 templateName 를 생성할 수 있습니다. rename() 함수가 호출될 경우 올바른 디렉터리를 지정하는 것이 중요합니다. QTemporaryFile은 임시 파일 자체가 생성된 볼륨/파일 시스템 내에서만 파일 이름을 변경할 수 있기 때문입니다.

open() 및 fileTemplate()도 참조하십시오 .

[explicit, since 6.7] QTemporaryFile::QTemporaryFile(const std::filesystem::path &templateName, QObject *parent = nullptr)

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.7에서 도입되었습니다.

[virtual noexcept] QTemporaryFile::~QTemporaryFile()

임시 파일 객체를 삭제합니다. 필요한 경우 파일이 자동으로 닫히며, 자동 삭제 모드인 경우 파일이 자동으로 삭제됩니다.

autoRemove()도 참조하십시오 .

bool QTemporaryFile::autoRemove() const

QTemporaryFile 가 자동 제거 모드에 있으면 ` true `를 반환합니다. 자동 제거 모드는 객체가 소멸될 때 디스크에서 파일 이름을 자동으로 삭제합니다. 이를 통해 스택에 ` QTemporaryFile ` 객체를 생성하고, 데이터를 채우고, 데이터를 읽은 후, 함수 반환 시 객체가 자동으로 정리되도록 매우 쉽게 처리할 수 있습니다.

자동 제거 기능은 기본적으로 활성화되어 있습니다.

setAutoRemove() 및 remove()도 참조하십시오 .

[static] QTemporaryFile *QTemporaryFile::createNativeFile(QFile &file)

file 가 아직 네이티브 파일이 아닌 경우, QDir::tempPath()에서 QTemporaryFile 파일이 생성되고, file 의 내용이 해당 파일에 복사된 후, 임시 파일에 대한 포인터가 반환됩니다. file 가 이미 네이티브 파일인 경우, 아무 작업도 수행하지 않고 0 을 반환합니다.

예:

QFile f_pointer(":/resources/file.txt");
QTemporaryFile::createNativeFile(f_pointer); // Returns a pointer to a temporary file

QFile f0("/users/qt/file.txt");
QTemporaryFile::createNativeFile(f0); // Returns 0

QFileInfo::isNativePath()도 참조하십시오 .

[static] QTemporaryFile *QTemporaryFile::createNativeFile(const QString &fileName)

기존의 QFile 객체가 아닌, 지정된 fileName 을 대상으로 작동합니다.

이 함수는 오버로드된 함수입니다.

[static, since 6.7] QTemporaryFile *QTemporaryFile::createNativeFile(const std::filesystem::path &fileName)

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.7에서 도입되었습니다.

[override virtual] QString QTemporaryFile::fileName() const

QFile::fileName() const를 재구현합니다.

QTemporaryFile 객체를 뒷받침하는 완전하고 고유한 파일 이름을 반환합니다. 이 문자열은 QTemporaryFile 가 열리기 전에는 null이며, 열린 후에는 fileTemplate()에 고유성을 확보하기 위한 추가 문자가 포함된 형태가 됩니다.

이 메서드가 반환하는 파일 이름은 이 객체를 생성하는 데 사용된(또는 setFileTemplate()에 전달된) 파일 이름 템플릿이 각각 상대 경로이거나 절대 경로인지에 따라 상대 경로이거나 절대 경로가 됩니다.

fileTemplate()도 참조하십시오 .

QString QTemporaryFile::fileTemplate() const

파일 이름 템플릿을 반환합니다.

이 메서드가 반환하는 파일 이름 템플릿은, 이 객체를 생성하는 데 사용된(또는 setFileTemplate()에 전달된) 파일 이름 템플릿이 각각 상대 경로인지 절대 경로인지에 따라 상대 경로 또는 절대 경로가 됩니다.

setFileTemplate(), fileName() 및 Default File Name Template도 참조하십시오 .

bool QTemporaryFile::open()

파일 시스템에서 QIODeviceBase::ReadWrite 모드로 고유한 임시 파일을 엽니다. 파일이 성공적으로 열렸거나 이미 열려 있는 경우 true 를 반환합니다. 그렇지 않은 경우 false 를 반환합니다.

open()이 처음 호출되면, fileTemplate() 함수를 기반으로 고유한 파일 이름을 생성합니다. 이 파일은 이 함수에 의해 생성된 것임이 보장됩니다(즉, 이전에 존재한 적이 없습니다).

close() 호출 후 파일을 다시 열면, 동일한 파일이 다시 열립니다.

setFileTemplate() 및 QT_USE_NODISCARD_FILE_OPEN도 참조하십시오 .

[override virtual protected] bool QTemporaryFile::open(QIODeviceBase::OpenMode mode)

QFile::open(QIODeviceBase::OpenMode mode)를 재구현합니다.

mode 플래그를 사용하여 파일 시스템에 고유한 임시 파일을 엽니다. 파일이 성공적으로 열렸거나 이미 열려 있는 경우 true 를 반환합니다. 그렇지 않은 경우 false 를 반환합니다.

처음 호출될 경우, open()은 fileTemplate()을 기반으로 고유한 파일 이름을 생성하고 mode 플래그로 파일을 엽니다. 이 파일은 본 함수에 의해 생성된 것임이 보장됩니다(즉, 이전에 존재한 적이 없습니다).

close() 호출 후 파일을 다시 열면, 동일한 파일이 mode 플래그로 다시 열립니다.

setFileTemplate() 및 QT_USE_NODISCARD_FILE_OPEN도 참조하십시오 .

bool QTemporaryFile::rename(const QString &newName)

현재 임시 파일의 이름을 newName 로 변경하고, 성공하면 true를 반환합니다.

이 함수는 ` QFile::rename()`과 비교하여 중요한 차이점이 있습니다. 파일 이름을 변경하는 저수준 시스템 호출이 실패할 경우 복사 후 삭제 작업을 수행하지 않습니다. 이는 ` newName `가 임시 파일이 생성된 볼륨이나 파일 시스템과 다른 볼륨이나 파일 시스템에 있는 파일을 지정했을 때 발생할 수 있습니다. 즉, ` QTemporaryFile `는 원자적 파일 이름 변경만 지원합니다.

이 기능은 모든 내용이 이미 포함된 상태로 대상 파일을 생성하도록 지원하기 위한 것으로, 다른 프로세스가 쓰기 중인 불완전한 파일을 볼 수 없도록 합니다. QSaveFile 클래스도 유사한 목적으로 사용할 수 있으며, 특히 대상 파일이 임시 파일이 아닌 경우에 유용합니다.

참고: rename()을 호출한다고 해서 autoRemove 가 비활성화되지는 않습니다. 이름이 변경된 파일을 영구적으로 유지하려면, rename() 호출 후 setAutoRemove 를 호출하여 false 로 설정해야 합니다. 그렇지 않으면 QTemporaryFile 객체가 소멸될 때 파일이 삭제됩니다.

newName 가 이미 존재하는 경우 이 함수는 실패합니다. 파일을 덮어쓰려면 대신 renameOverwrite()을 사용하십시오.

renameOverwrite(), QSaveFile, QSaveFile::commit(), QFile::rename()도 참조하십시오 .

[since 6.7] bool QTemporaryFile::rename(const std::filesystem::path &newName)

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.7에서 도입되었습니다.

[since 6.11] bool QTemporaryFile::renameOverwrite(const QString &newName)

이 함수는 rename()과 동일하지만, QSaveFile::commit()과 마찬가지로 newName 가 이미 존재하는 경우 이를 원자적으로 대체한다는 점이 다릅니다.

이름 변경을 원자적으로 수행할 수 없는 경우(예: 임시 파일과 대상 파일 이름이 서로 다른 파일 시스템/볼륨/드라이브에 있는 경우) false 를 반환합니다.

이 함수는 Qt 6.11에서 도입되었습니다.

rename(), QSaveFile, QSaveFile::commit() 및 QFile::rename()도 참조하십시오 .

[since 6.11] bool QTemporaryFile::renameOverwrite(const std::filesystem::path &newName)

이것은 오버로드된 함수입니다.

이 함수는 Qt 6.11에서 도입되었습니다.

void QTemporaryFile::setAutoRemove(bool b)

b 의 값이 true 인 경우, QTemporaryFile 를 자동 제거 모드로 설정합니다.

자동 제거 기능은 기본적으로 켜져 있습니다.

이 속성을 false 로 설정하는 경우, 더 이상 필요하지 않게 된 파일을 제거할 수 있는 방법을 애플리케이션에서 제공해야 하며, 여기에는 다른 프로세스로 책임을 넘기는 것도 포함됩니다. 파일 이름을 얻으려면 항상 fileName() 함수를 사용해야 하며, QTemporaryFile 가 생성한 파일 이름을 추측하려고 해서는 안 됩니다.

일부 시스템에서는 파일을 닫기 전에 fileName()을 호출하지 않으면, 이 속성의 상태와 관계없이 임시 파일이 제거될 수 있습니다. 이러한 동작에 의존해서는 안 되므로, 애플리케이션 코드는 fileName()를 호출하거나 자동 제거 기능을 활성화된 상태로 두어야 합니다.

autoRemove() 및 remove()도 참조하십시오 .

void QTemporaryFile::setFileTemplate(const QString &templateName)

파일 이름 템플릿을 templateName 로 설정합니다.

파일 이름( templateName 에서 마지막 디렉터리 경로 구분자 뒤의 부분)에 "XXXXXX" 가 포함되어 있지 않으면, 자동으로 추가됩니다.

"XXXXXX" 는 파일 이름의 동적 부분으로 대체되며, 이 부분은 고유하도록 계산됩니다.

templateName 가 상대 경로인 경우, 경로는 현재 작업 디렉터리를 기준으로 합니다. 시스템의 임시 디렉터리를 사용하려면 QDir::tempPath()를 사용하여 templateName 를 구성할 수 있습니다. rename() 함수가 호출될 경우 올바른 디렉터리를 지정하는 것이 중요합니다. QTemporaryFile 는 임시 파일 자체가 생성된 볼륨/파일 시스템 내의 파일만 이름을 변경할 수 있기 때문입니다.

fileTemplate() 및 fileName()함수도 참조하십시오 .

[since 6.7] void QTemporaryFile::setFileTemplate(const std::filesystem::path &name)

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.7에서 도입되었습니다.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.