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() | |
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) |
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() 함수가 호출될 경우, 임시 파일 자체와 동일한 볼륨/파일 시스템 내의 파일 이름만 바꿀 수 있으므로 올바른 디렉터리를 지정하는 것이 중요합니다.
파일 이름(지정된 파일 템플릿의 마지막 디렉토리 경로 구분자 뒤 부분)에는 특수 시퀀스 "XXXXXX"
(대문자 "X"
6자 이상)를 포함할 수 있으며, 이 시퀀스는 파일 이름의 자동 생성된 부분으로 대체됩니다. 파일 이름에 "XXXXXX"
이 포함되지 않은 경우 QTemporaryFile은 생성된 부분을 파일 이름에 추가합니다. "XXXXXX"
의 마지막 부분만 고려됩니다.
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(":/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)
이 함수는 오버로드된 함수입니다.
기존 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 플래그가 있는 파일 시스템에서 고유한 임시 파일을 엽니다. 파일이 성공적으로 열렸거나 이미 열려 있으면 true
를 반환합니다. 그렇지 않으면 false
을 반환합니다.
open()이 처음 호출되면 fileTemplate()를 기반으로 고유한 파일 이름을 만들고 mode 플래그를 사용하여 파일을 엽니다. 이 파일은 이 함수에 의해 생성된 것으로 보장됩니다(즉, 이전에 존재한 적이 없는 파일).
close() 호출 후 파일을 다시 열면 mode 플래그를 사용하여 동일한 파일이 다시 열립니다.
setFileTemplate() 및 QT_USE_NODISCARD_FILE_OPEN 을참조하세요 .
bool QTemporaryFile::rename(const QString &newName)
현재 임시 파일의 이름을 newName 로 바꾸고 성공하면 참을 반환합니다.
이 함수는 QFile::rename()와 중요한 차이점이 있는데, 파일 이름을 바꾸는 하위 수준 시스템 호출이 실패할 경우 복사+삭제를 수행하지 않는다는 것입니다. newName 이 임시 파일이 생성된 볼륨이나 파일시스템이 아닌 다른 볼륨이나 파일시스템의 파일을 지정하는 경우 발생할 수 있는 일입니다. 즉, QTemporaryFile 은 원자적인 파일 이름 바꾸기만 지원합니다.
이 기능은 모든 콘텐츠가 이미 있는 대상 파일을 구체화하기 위한 것으로, 다른 프로세스에서 작성 중인 불완전한 파일을 볼 수 없습니다. QSaveFile 클래스도 비슷한 용도로 사용할 수 있으며, 특히 대상 파일이 임시 파일이 아닌 경우 더욱 그렇습니다.
QSaveFile, QSaveFile::commit() 및 QFile::rename()도 참조하세요 .
[since 6.7]
bool QTemporaryFile::rename(const std::filesystem::path &newName)
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.7에 도입되었습니다.
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에 도입되었습니다.
© 2025 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.