QFile Class
QFile 클래스는 파일 읽기 및 쓰기를 위한 인터페이스를 제공합니다. 더 보기...
Header: | #include <QFile> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
상속합니다: | QFileDevice |
상속 대상: |
- 상속된 멤버를 포함한 모든 멤버 목록
- QFile은 입력/출력 및 네트워킹의 일부입니다.
참고: 이 클래스의 모든 함수는 재상속됩니다.
공용 함수
QFile() | |
QFile(QObject *parent) | |
QFile(const QString &name) | |
(since 6.0) | QFile(const std::filesystem::path &name) |
QFile(const QString &name, QObject *parent) | |
(since 6.0) | QFile(const std::filesystem::path &name, QObject *parent) |
virtual | ~QFile() |
bool | copy(const QString &newName) |
(since 6.0) bool | copy(const std::filesystem::path &newName) |
bool | exists() const |
(since 6.0) std::filesystem::path | filesystemFileName() const |
(since 6.3) std::filesystem::path | filesystemSymLinkTarget() const |
bool | link(const QString &linkName) |
(since 6.0) bool | link(const std::filesystem::path &newName) |
bool | moveToTrash() |
(since 6.3) bool | open(QIODeviceBase::OpenMode mode, QFileDevice::Permissions permissions) |
bool | open(FILE *fh, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle) |
bool | open(int fd, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle) |
bool | remove() |
bool | rename(const QString &newName) |
(since 6.0) bool | rename(const std::filesystem::path &newName) |
void | setFileName(const QString &name) |
(since 6.0) void | setFileName(const std::filesystem::path &name) |
QString | symLinkTarget() const |
재구현된 공용 함수
virtual QString | fileName() const override |
virtual bool | open(QIODeviceBase::OpenMode mode) override |
virtual QFileDevice::Permissions | permissions() const override |
virtual bool | resize(qint64 sz) override |
virtual bool | setPermissions(QFileDevice::Permissions permissions) override |
virtual qint64 | size() const override |
정적 공용 멤버
bool | copy(const QString &fileName, const QString &newName) |
QString | decodeName(const QByteArray &localFileName) |
QString | decodeName(const char *localFileName) |
QByteArray | encodeName(const QString &fileName) |
bool | exists(const QString &fileName) |
(since 6.3) std::filesystem::path | filesystemSymLinkTarget(const std::filesystem::path &fileName) |
bool | link(const QString &fileName, const QString &linkName) |
bool | moveToTrash(const QString &fileName, QString *pathInTrash = nullptr) |
QFileDevice::Permissions | permissions(const QString &fileName) |
(since 6.0) QFileDevice::Permissions | permissions(const std::filesystem::path &filename) |
bool | remove(const QString &fileName) |
bool | rename(const QString &oldName, const QString &newName) |
bool | resize(const QString &fileName, qint64 sz) |
bool | setPermissions(const QString &fileName, QFileDevice::Permissions permissions) |
(since 6.0) bool | setPermissions(const std::filesystem::path &filename, QFileDevice::Permissions permissionSpec) |
QString | symLinkTarget(const QString &fileName) |
상세 설명
QFile은 텍스트와 바이너리 파일 및 리소스를 읽고 쓰기 위한 입출력 장치입니다. QFile은 단독으로 사용하거나 QTextStream 또는 QDataStream 과 함께 사용하면 더 편리하게 사용할 수 있습니다.
파일 이름은 일반적으로 생성자에서 전달되지만 setFileName()를 사용하여 언제든지 설정할 수 있습니다. QFile은 운영 체제에 관계없이 파일 구분 기호가 '/'일 것으로 예상합니다. 다른 구분 기호(예: '\')의 사용은 지원되지 않습니다.
exists()를 사용하여 파일의 존재 여부를 확인하고 remove()를 사용하여 파일을 제거할 수 있습니다. (보다 고급 파일 시스템 관련 작업은 QFileInfo 및 QDir 에서 제공합니다.)
파일은 open()로 열고, close()로 닫고, flush()로 플러시합니다. 데이터는 일반적으로 QDataStream 또는 QTextStream 을 사용하여 읽고 쓰지만 QIODevice- 상속 함수 read(), readLine(), readAll(), write()를 호출할 수도 있습니다. QFile도 getChar(), putChar(), ungetChar()를 상속하며, 한 번에 한 문자씩 작동합니다.
파일 크기는 size()로 반환됩니다. pos ()를 사용하여 현재 파일 위치를 가져오거나 seek()를 사용하여 새 파일 위치로 이동할 수 있습니다. 파일 끝에 도달한 경우 atEnd()는 true
을 반환합니다.
파일 직접 읽기
다음 예제는 텍스트 파일을 한 줄씩 읽습니다:
QFile file("in.txt"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; while (!file.atEnd()) { QByteArray line = file.readLine(); process_line(line); }
open()에 전달된 Text 플래그는 Qt가 Windows 스타일의 줄 종결자("\r\n")를 C++ 스타일의 종결자("\n")로 변환하도록 지시합니다. 기본적으로 QFile은 바이너리를 가정하므로 파일에 저장된 바이트에 대해서는 변환을 수행하지 않습니다.
스트림을 사용하여 파일 읽기
다음 예제는 QTextStream 을 사용하여 텍스트 파일을 한 줄씩 읽습니다:
QFile file("in.txt"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; QTextStream in(&file); while (!in.atEnd()) { QString line = in.readLine(); process_line(line); }
QTextStream 는 디스크에 저장된 8비트 데이터를 16비트 유니코드 QString 로 변환하는 작업을 처리합니다. 기본적으로 파일이 UTF-8로 인코딩되어 있다고 가정합니다. QTextStream::setEncoding ()를 사용하여 변경할 수 있습니다.
텍스트를 작성하려면 오버로드된 연산자<<()를 사용하여 왼쪽에 QTextStream 를, 오른쪽에 다양한 데이터 유형( QString)을 사용할 수 있습니다:
QFile file("out.txt"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) return; QTextStream out(&file); out << "The magic number is: " << 49 << "\n";
QDataStream 데이터를 쓸 때는 연산자<<()를, 다시 읽을 때는 연산자>>()를 사용할 수 있다는 점에서 비슷합니다. 자세한 내용은 클래스 설명서를 참조하세요.
시그널
QTcpSocket 과 같은 다른 QIODevice 구현과 달리 QFile은 aboutToClose(), bytesWritten() 또는 readyRead() 시그널을 방출하지 않습니다. 이 구현 세부 사항은 QFile이 Unix 플랫폼의 장치 파일과 같은 특정 유형의 파일을 읽고 쓰는 데 적합하지 않다는 것을 의미합니다.
플랫폼별 문제
I/O와 관련된 Qt API는 파일 경로를 표현하기 위해 UTF-16 기반 QString을 사용합니다. 그러나 표준 C++ API(<cstdio>
또는 <iostream>
) 또는 플랫폼별 API는 8비트 인코딩된 경로가 필요한 경우가 많습니다. encodeName () 및 decodeName()을 사용하여 두 표현 사이를 변환할 수 있습니다.
Unix에서는 size()가 항상 0을 반환하는 특수 시스템 파일(예: /proc
)이 있지만 이러한 파일에서 더 많은 데이터를 읽을 수 있으며, 데이터는 read()를 호출하면 직접 응답으로 생성될 수 있습니다. 그러나 이 경우 atEnd()를 사용하여 읽을 데이터가 더 있는지 확인할 수 없습니다( atEnd()는 크기가 0이라고 주장하는 파일에 대해 참을 반환하므로). 대신 readAll()를 호출하거나 더 이상 읽을 수 있는 데이터가 없을 때까지 read() 또는 readLine()를 반복해서 호출해야 합니다. 다음 예에서는 QTextStream 을 사용하여 /proc/modules
을 한 줄씩 읽습니다:
QFile file("/proc/modules"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; QTextStream in(&file); QString line = in.readLine(); while (!line.isNull()) { process_line(line); line = in.readLine(); }
파일 권한은 유닉스 계열 시스템과 Windows에서 다르게 처리됩니다. 유닉스 계열 시스템의 writable 디렉터리가 아닌 곳에서는 파일을 만들 수 없습니다. 예를 들어, '내 문서' 디렉토리는 일반적으로 쓰기 불가능하지만 그 안에 파일을 생성할 수 있는 Windows에서는 항상 그런 것은 아닙니다.
Qt의 파일 권한에 대한 이해는 제한적이며, 이는 특히 QFile::setPermissions() 함수에 영향을 미칩니다. Windows에서 Qt는 레거시 읽기 전용 플래그만 설정하며, 이는 Write* 플래그가 전달되지 않은 경우에만 설정됩니다. Qt는 액세스 제어 목록(ACL)을 조작하지 않으므로 이 함수는 NTFS 볼륨에서는 대부분 쓸모가 없습니다. VFAT 파일 시스템을 사용하는 USB 스틱에는 여전히 사용할 수 있습니다. POSIX ACL도 조작되지 않습니다.
Android에서는 콘텐츠 URI를 다룰 때 몇 가지 제한 사항이 적용됩니다:
- Android의 기본 파일 선택기를 구현하는 QFileDialog 을 통해 사용자에게 액세스 권한이 필요한지 묻는 메시지가 표시될 수 있습니다.
- 다른 공용 외부 디렉터리 대신 앱 전용 디렉터리를 사용하는 등 범위 지정 저장소 가이드라인을 따르는 것을 목표로 하세요. 자세한 내용은 저장소 모범 사례도 참조하세요.
- Qt API(예: QFile)의 설계로 인해 후자의 API를 Android의 MediaStore API와 완전히 통합할 수 없습니다.
QTextStream, QDataStream, QFileInfo, QDir, 그리고 Qt 리소스 시스템을참조하세요 .
멤버 함수 문서
QFile::QFile()
QFile 객체를 생성합니다.
[explicit]
QFile::QFile(QObject *parent)
주어진 parent 으로 새 파일 객체를 생성합니다.
QFile::QFile(const QString &name)
주어진 name 로 파일을 나타내는 새 파일 객체를 생성합니다.
참고: Qt 6.8 이하 버전에서는 이전 버전과의 호환성을 위해 이 생성자는 암시적입니다. Qt 6.9부터 이 생성자는 무조건 explicit
입니다. 사용자는 Qt 헤더를 포함하기 전에 QT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH
매크로를 정의하여 이전 버전의 Qt에서도 이 생성자를 explicit
로 강제 설정할 수 있습니다.
[since 6.0]
QFile::QFile(const std::filesystem::path &name)
주어진 name 로 파일을 나타내는 새 파일 객체를 생성합니다.
참고: Qt 6.8 이하 버전에서는 이전 버전과의 호환성을 위해 이 생성자는 암시적입니다. Qt 6.9부터 이 생성자는 무조건 explicit
입니다. 사용자는 Qt 헤더를 포함하기 전에 QT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH
매크로를 정의하여 이전 버전의 Qt에서도 이 생성자를 explicit
로 강제 설정할 수 있습니다.
이 기능은 Qt 6.0에 도입되었습니다.
QFile::QFile(const QString &name, QObject *parent)
지정된 name 을 가진 파일을 나타내기 위해 지정된 parent 으로 새 파일 객체를 생성합니다.
[since 6.0]
QFile::QFile(const std::filesystem::path &name, QObject *parent)
지정된 name 을 가진 파일을 나타내기 위해 지정된 parent 으로 새 파일 객체를 생성합니다.
이 함수는 Qt 6.0에 도입되었습니다.
[virtual noexcept]
QFile::~QFile()
파일 개체를 삭제하고 필요한 경우 닫습니다.
bool QFile::copy(const QString &newName)
fileName() 파일을 newName 으로 복사합니다.
이 파일은 복사되기 전에 닫힙니다.
복사되는 파일이 심볼릭 링크(심볼릭 링크)인 경우에는 링크 자체가 아니라 링크가 참조하는 파일만 복사됩니다. 복사되는 사용 권한을 제외하고 다른 파일 메타데이터는 복사되지 않습니다.
성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
newName 이라는 이름의 파일이 이미 존재하는 경우 copy()는 false
을 반환합니다. 즉, QFile 은 이 파일을 덮어쓰지 않습니다.
참고: Android에서는 아직 content
스키마 URI에 대해 이 작업이 지원되지 않습니다.
setFileName()도 참조하세요 .
[since 6.0]
bool QFile::copy(const std::filesystem::path &newName)
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.0에 도입되었습니다.
[static]
bool QFile::copy(const QString &fileName, const QString &newName)
이 함수는 과부하된 함수입니다.
fileName 이라는 파일을 newName 으로 복사합니다.
이 파일은 복사되기 전에 닫힙니다.
복사되는 파일이 심볼릭 링크(심볼릭 링크)인 경우 링크 자체가 아니라 링크가 참조하는 파일만 복사됩니다. 복사되는 사용 권한을 제외하고 다른 파일 메타데이터는 복사되지 않습니다.
성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
newName 이라는 이름의 파일이 이미 존재하는 경우 copy()는 false
을 반환합니다. 즉, QFile 은 이 파일을 덮어쓰지 않습니다.
참고: Android에서는 아직 content
스키마 URI에 대해 이 작업이 지원되지 않습니다.
rename()도 참조하세요 .
[static]
QString QFile::decodeName(const QByteArray &localFileName)
localFileName 을 사용하여 QFile::encodeName()의 반대를 수행합니다.
encodeName()도 참조하세요 .
[static]
QString QFile::decodeName(const char *localFileName)
이 함수는 오버로드된 함수입니다.
주어진 localFileName 의 유니코드 버전을 반환합니다. 자세한 내용은 encodeName()를 참조하세요.
[static]
QByteArray QFile::encodeName(const QString &fileName)
fileName 을 네이티브 API에서 사용할 수 있는 8비트 인코딩으로 변환합니다. Windows의 경우 인코딩은 활성 Windows(ANSI) 코드 페이지의 인코딩을 사용합니다. 다른 플랫폼에서는 macOS의 경우 분해된 형식(NFD)의 UTF-8입니다.
decodeName()도 참조하세요 .
[static]
bool QFile::exists(const QString &fileName)
fileName 으로 지정된 파일이 존재하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
참고: fileName 이 존재하지 않는 파일을 가리키는 심볼릭 링크인 경우 false가 반환됩니다.
bool QFile::exists() const
이 함수는 오버로드된 함수입니다.
fileName()에 지정된 파일이 존재하면 true
를 반환하고, 그렇지 않으면 false
를 반환합니다.
fileName() 및 setFileName()도 참조하세요 .
[override virtual]
QString QFile::fileName() const
재구현합니다: QFileDevice::fileName() const.
setFileName() 또는 QFile 생성자에 의해 설정된 이름을 반환합니다.
setFileName() 및 QFileInfo::fileName()도 참조하십시오 .
[since 6.0]
std::filesystem::path QFile::filesystemFileName() const
fileName()를 std::filesystem::path
로 반환합니다.
이 함수는 Qt 6.0에 도입되었습니다.
[since 6.3]
std::filesystem::path QFile::filesystemSymLinkTarget() const
symLinkTarget()를 std::filesystem::path
로 반환합니다.
이 함수는 Qt 6.3에 도입되었습니다.
[static, since 6.3]
std::filesystem::path QFile::filesystemSymLinkTarget(const std::filesystem::path &fileName)
symLinkTarget()를 fileName 의 std::filesystem::path
로 반환합니다.
이 함수는 Qt 6.3에 도입되었습니다.
bool QFile::link(const QString &linkName)
현재 fileName()로 지정된 파일을 가리키는 linkName 링크를 만듭니다. 링크는 기본 파일시스템에 따라 다릅니다(Windows에서는 바로 가기, 유닉스에서는 심볼릭 링크 등). 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
이 함수는 파일 시스템에 이미 존재하는 엔티티를 덮어쓰지 않습니다. 이 경우 link()
는 false를 반환하고 error()를 설정하여 RenameError 를 반환합니다.
참고: Windows에서 유효한 링크를 만들려면 linkName 의 파일 확장자가 .lnk
이어야 합니다.
setFileName()도 참조하세요 .
[since 6.0]
bool QFile::link(const std::filesystem::path &newName)
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.0에 도입되었습니다.
[static]
bool QFile::link(const QString &fileName, const QString &linkName)
이 함수는 오버로드된 함수입니다.
fileName 파일을 가리키는 linkName 이라는 링크를 만듭니다. 링크는 기본 파일시스템에 따라 다릅니다(Windows의 경우 바로 가기, Unix의 경우 심볼릭 링크 등). 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
link()도 참조하세요 .
bool QFile::moveToTrash()
fileName()로 지정된 파일을 휴지통으로 이동합니다. 성공하면 true
을 반환하고 fileName()을 휴지통 내에서 파일을 찾을 수 있는 경로로 설정하며, 그렇지 않으면 false
을 반환합니다.
이 함수가 실행되는 시간은 휴지통에 버리는 파일의 크기와 무관합니다. 이 함수가 디렉토리에서 호출되는 경우 휴지통에 버려지는 파일 수에 비례할 수 있습니다. 현재 fileName()가 심볼릭 링크를 가리키는 경우 이 함수는 링크의 대상이 아니라 링크를 휴지통으로 이동하여 링크를 끊을 수 있습니다.
이 함수는 Windows 및 macOS API를 사용하여 이 두 운영 체제에서 휴지통 처리를 수행합니다. 다른 운영 체제(유닉스 시스템)에서는 이 함수가 FreeDesktop.org 휴지통 사양 버전 1.0을 구현합니다.
참고: FreeDesktop.org 휴지통 구현을 사용할 때 파일 이름 변경 및 하드 링크를 통해 파일을 휴지통 위치로 옮길 수 없는 경우 이 함수는 실패합니다. 이 조건은 휴지통으로 이동되는 파일이 현재 사용자에게 .Trash
디렉터리를 만들 수 있는 권한이 없는 볼륨(마운트 지점)에 있거나 파일 시스템 유형이나 구성이 비정상적인 경우(예: 마운트 지점이 아닌 하위 볼륨)에 발생합니다.
참고: 시스템 API가 휴지통에 있는 파일의 위치를 보고하지 않는 시스템에서는 파일이 이동된 후 fileName()가 null 문자열로 설정됩니다. 휴지통이 없는 시스템에서는 이 함수가 항상 false를 반환합니다.
[static]
bool QFile::moveToTrash(const QString &fileName, QString *pathInTrash = nullptr)
이 함수는 오버로드된 함수입니다.
fileName 에 지정된 파일을 휴지통으로 이동합니다. 성공하면 true
을 반환하고 pathInTrash (제공된 경우)을 휴지통 내에서 파일을 찾을 수 있는 경로로 설정하며, 그렇지 않으면 false
을 반환합니다.
이 함수가 실행되는 시간은 휴지통에 버리는 파일의 크기와 무관합니다. 이 함수가 디렉토리에서 호출되는 경우 휴지통에 버려지는 파일 수에 비례할 수 있습니다. 현재 fileName()가 심볼릭 링크를 가리키는 경우 이 함수는 링크의 대상이 아니라 링크를 휴지통으로 이동하여 링크를 끊을 수 있습니다.
이 함수는 Windows 및 macOS API를 사용하여 이 두 운영 체제에서 휴지통 처리를 수행합니다. 다른 운영 체제(유닉스 시스템)에서는 이 함수가 FreeDesktop.org 휴지통 사양 버전 1.0을 구현합니다.
참고: FreeDesktop.org 휴지통 구현을 사용할 때 파일 이름 변경 및 하드 링크를 통해 파일을 휴지통 위치로 옮길 수 없는 경우 이 함수는 실패합니다. 이 조건은 휴지통으로 이동되는 파일이 현재 사용자에게 .Trash
디렉터리를 만들 수 있는 권한이 없는 볼륨(마운트 지점)에 있거나 파일 시스템 유형이나 구성이 비정상적인 경우(예: 마운트 지점이 아닌 하위 볼륨)에 발생합니다.
참고: 시스템 API가 휴지통에 있는 파일의 경로를 보고하지 않는 시스템에서는 파일이 이동된 후 pathInTrash 이 null 문자열로 설정됩니다. 휴지통이 없는 시스템에서는 이 함수가 항상 false를 반환합니다.
[override virtual]
bool QFile::open(QIODeviceBase::OpenMode mode)
다시 구현합니다: QIODevice::open(QIODeviceBase::OpenMode 모드).
mode 플래그를 사용하여 파일을 열고, 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
mode 의 플래그에는 QIODeviceBase::ReadOnly, WriteOnly 또는 ReadWrite 이 포함되어야 합니다. 또한 Text 및 Unbuffered 과 같은 추가 플래그가 있을 수도 있습니다.
참고: WriteOnly 또는 ReadWrite 모드에서 관련 파일이 아직 존재하지 않으면 이 함수는 파일을 열기 전에 새 파일을 만들려고 시도합니다. 파일은 POSIX 시스템에서는 유마스크로 마스킹된 모드 0666으로 생성되며, Windows에서는 상위 디렉터리에서 상속된 권한으로 생성됩니다. Android에서는 파일 이름의 상위 디렉터리에 대한 액세스 권한이 있어야 하며, 그렇지 않으면 이 존재하지 않는 파일을 만들 수 없습니다.
QT_USE_NODISCARD_FILE_OPEN 및 setFileName()도 참조하세요 .
[since 6.3]
bool QFile::open(QIODeviceBase::OpenMode mode, QFileDevice::Permissions permissions)
이것은 오버로드된 함수입니다.
파일이 존재하지 않고 mode 이 파일 생성을 의미하는 경우 지정된 permissions 으로 파일이 생성됩니다.
POSIX 시스템에서 실제 권한은 umask
의 값에 영향을 받습니다.
Windows에서는 ACL을 사용하여 권한이 에뮬레이션됩니다. 그룹에 다른 그룹보다 적은 권한이 부여된 경우 이러한 ACL은 표준 순서가 아닐 수 있습니다. 이러한 권한이 있는 파일 및 디렉터리는 속성 대화 상자의 보안 탭이 열릴 때 경고를 생성합니다. 다른 사용자에게 부여된 모든 권한을 그룹에 부여하면 이러한 경고를 피할 수 있습니다.
이 기능은 Qt 6.3에 도입되었습니다.
QIODevice::OpenMode, setFileName() 및 QT_USE_NODISCARD_FILE_OPEN 를참조하세요 .
bool QFile::open(FILE *fh, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)
이 함수는 오버로드된 함수입니다.
지정된 mode 에서 기존 파일 핸들 fh 을 엽니다. handleFlags 을 사용하여 추가 옵션을 지정할 수 있습니다. 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
예시:
#include <stdio.h> void printError(const char* msg) { QFile file; file.open(stderr, QIODevice::WriteOnly); file.write(msg, qstrlen(msg)); // write to stderr file.close(); }
이 함수를 사용하여 QFile 을 열면 close()의 동작은 AutoCloseHandle 플래그에 의해 제어됩니다. AutoCloseHandle이 지정되어 있고 이 함수가 성공하면 close()를 호출하면 채택된 핸들이 닫힙니다. 그렇지 않으면 close()는 파일을 실제로 닫지 않고 플러시만 합니다.
경고:
- fh 가
stdin
,stdout
,stderr
와 같이 일반 파일을 참조하지 않는 경우 seek()가 작동하지 않을 수 있습니다. size()는 이러한 경우0
를 반환합니다. 자세한 내용은 QIODevice::isSequential()를 참조하세요. - 이 함수는 파일 이름을 지정하지 않고 파일을 열기 때문에 QFileInfo 과 함께 QFile 을 사용할 수 없습니다.
Windows 플랫폼에 대한 참고 사항
fh 는 파일 및 기타 임의 액세스 장치에 액세스할 때 바이너리 모드로 열어야 합니다(즉, 모드 문자열에 "rb" 또는 "wb"와 같이 'b'가 포함되어야 함). QIODevice::Text를 mode 로 전달하면 Qt는 줄 끝 문자를 변환합니다. stdin 및 stdout과 같은 순차 장치는 이 제한의 영향을 받지 않습니다.
콘솔에서 stdin, stdout 및 stderr 스트림을 사용하려면 콘솔 애플리케이션에 대한 지원을 사용 설정해야 합니다. 이렇게 하려면 애플리케이션의 프로젝트 파일에 다음 선언을 추가하세요:
CONFIG += console
close() 및 QT_USE_NODISCARD_FILE_OPEN 을참조하세요 .
bool QFile::open(int fd, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)
이 함수는 오버로드된 함수입니다.
주어진 mode 에서 기존 파일 설명자 fd 를 엽니다. handleFlags 를 사용하여 추가 옵션을 지정할 수 있습니다. 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
이 함수를 사용하여 QFile 을 열면 close()의 동작은 AutoCloseHandle 플래그에 의해 제어됩니다. AutoCloseHandle이 지정되어 있고 이 함수가 성공하면 close()를 호출하면 채택된 핸들이 닫힙니다. 그렇지 않으면 close()는 파일을 실제로 닫지 않고 플러시만 합니다.
경고: fd 가 0(stdin
), 1(stdout
) 또는 2(stderr
)와 같이 일반 파일이 아닌 경우 seek()가 작동하지 않을 수 있습니다. 이러한 경우 size()는 0
을 반환합니다. 자세한 내용은 QIODevice::isSequential()를 참조하세요.
close() 및 QT_USE_NODISCARD_FILE_OPEN 을참조하세요 .
[override virtual]
QFileDevice::Permissions QFile::permissions() const
재구현합니다: QFileDevice::permissions() const.
setPermissions()도 참조하십시오 .
[static]
QFileDevice::Permissions QFile::permissions(const QString &fileName)
이 함수는 오버로드된 함수입니다.
fileName 에 대한 QFile::Permission 의 전체 OR 조합을 반환합니다.
[static, since 6.0]
QFileDevice::Permissions QFile::permissions(const std::filesystem::path &filename)
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.0에 도입되었습니다.
bool QFile::remove()
fileName()로 지정된 파일을 제거합니다. 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
파일은 제거되기 전에 닫힙니다.
setFileName()도 참조하세요 .
[static]
bool QFile::remove(const QString &fileName)
이 함수는 오버로드된 함수입니다.
주어진 fileName 에 지정된 파일을 제거합니다.
성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
remove()도 참조하세요 .
bool QFile::rename(const QString &newName)
현재 fileName()로 지정된 파일의 이름을 newName 으로 바꿉니다. 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
이름이 newName 인 파일이 이미 있는 경우 rename()은 false
을 반환합니다(즉, QFile 은 덮어쓰지 않습니다).
파일은 이름이 바뀌기 전에 닫힙니다.
이름 바꾸기 연산이 실패하면, Qt는 이 파일의 내용을 newName 로 복사한 다음 newName 만 유지하고 이 파일을 제거합니다. 복사 연산이 실패하거나 이 파일을 제거할 수 없으면, 대상 파일 newName 이 제거되어 이전 상태로 복원됩니다.
setFileName()도 참조하세요 .
[since 6.0]
bool QFile::rename(const std::filesystem::path &newName)
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.0에 도입되었습니다.
[static]
bool QFile::rename(const QString &oldName, const QString &newName)
이 함수는 과부하된 함수입니다.
oldName 파일의 이름을 newName 으로 바꿉니다. 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
이름이 newName 인 파일이 이미 있는 경우 rename()은 false
을 반환합니다(즉, QFile 은 덮어쓰지 않습니다).
rename()도 참조하세요 .
[override virtual]
bool QFile::resize(qint64 sz)
다시 구현합니다: QFileDevice::resize(qint64 sz).
[static]
bool QFile::resize(const QString &fileName, qint64 sz)
이 함수는 과부하된 함수입니다.
fileName 을 크기(바이트 단위)로 설정합니다 sz. 크기 조정에 성공하면 true
을 반환하고, 그렇지 않으면 거짓을 반환합니다. sz 가 현재 fileName 보다 크면 새 바이트가 0으로 설정되고 sz 보다 작으면 파일이 단순히 잘립니다.
경고: 파일이 존재하지 않으면 이 함수가 실패할 수 있습니다.
resize()도 참조하세요 .
void QFile::setFileName(const QString &name)
파일의 name 을 설정합니다. 이름에는 경로, 상대 경로 또는 절대 경로를 사용할 수 없습니다.
파일이 이미 열려 있는 경우에는 이 함수를 호출하지 마세요.
파일 이름에 경로가 없거나 상대 경로인 경우 사용되는 경로는 open( ) 호출 시점의 애플리케이션의 현재 디렉토리 경로가 됩니다.
예시:
QFile file; QDir::setCurrent("/tmp"); file.setFileName("readme.txt"); QDir::setCurrent("/home"); file.open(QIODevice::ReadOnly); // opens "/home/readme.txt" under Unix
디렉터리 구분 기호 "/"는 Qt에서 지원하는 모든 운영 체제에서 작동합니다.
fileName(), QFileInfo, QDir 를참조하십시오 .
[since 6.0]
void QFile::setFileName(const std::filesystem::path &name)
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.0에 도입되었습니다.
[override virtual]
bool QFile::setPermissions(QFileDevice::Permissions permissions)
다시 구현합니다: QFileDevice::setPermissions(QFileDevice::권한 권한).
파일에 대한 권한을 지정된 permissions 로 설정합니다. 성공하면 true
, 권한을 수정할 수 없으면 false
을 반환합니다.
경고: 이 함수는 ACL을 조작하지 않으므로 효과가 제한될 수 있습니다.
permissions() 및 setFileName()도 참조하세요 .
[static]
bool QFile::setPermissions(const QString &fileName, QFileDevice::Permissions permissions)
이 함수는 과부하된 함수입니다.
fileName 파일에 대한 권한을 permissions 으로 설정합니다.
[static, since 6.0]
bool QFile::setPermissions(const std::filesystem::path &filename, QFileDevice::Permissions permissionSpec)
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.0에 도입되었습니다.
[override virtual]
qint64 QFile::size() const
재구현합니다: QFileDevice::size() const.
[static]
QString QFile::symLinkTarget(const QString &fileName)
fileName 에 지정된 심볼릭 링크(또는 Windows의 경우 바로 가기)가 참조하는 파일 또는 디렉터리의 절대 경로를 반환하거나 fileName 이 심볼릭 링크에 해당하지 않는 경우 빈 문자열을 반환합니다.
이 이름은 기존 파일을 나타내지 않을 수 있으며 문자열일 뿐입니다. QFile::exists() 심볼릭 링크가 기존 파일을 가리키면 true
을 반환합니다.
QString QFile::symLinkTarget() const
이 함수는 오버로드된 함수입니다.
심볼릭 링크(또는 Windows의 경우 바로 가기)가 가리키는 파일 또는 디렉터리의 절대 경로를 반환하거나, 개체가 심볼릭 링크가 아닌 경우 빈 문자열을 반환합니다.
이 이름은 기존 파일을 나타내지 않을 수 있으며 문자열일 뿐입니다. QFile::exists()는 심볼릭 링크가 기존 파일을 가리키는 경우 true
을 반환합니다.
fileName() 및 setFileName()도 참조하세요 .
© 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.