이 페이지에서

QMimeDatabase Class

QMimeDatabase 클래스는 MIME 유형 데이터베이스를 관리합니다. 더 보기...

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

참고: 이 클래스의 모든 함수는 스레드 안전합니다.

공개 유형

enum MatchMode { MatchDefault, MatchExtension, MatchContent }

공개 함수

QMimeDatabase()
~QMimeDatabase()
QList<QMimeType> allMimeTypes() const
QMimeType mimeTypeForData(QIODevice *device) const
QMimeType mimeTypeForData(const QByteArray &data) const
QMimeType mimeTypeForFile(const QFileInfo &fileInfo, QMimeDatabase::MatchMode mode = MatchDefault) const
QMimeType mimeTypeForFile(const QString &fileName, QMimeDatabase::MatchMode mode = MatchDefault) const
QMimeType mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const
QMimeType mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const
QMimeType mimeTypeForName(const QString &nameOrAlias) const
QMimeType mimeTypeForUrl(const QUrl &url) const
QList<QMimeType> mimeTypesForFileName(const QString &fileName) const
QString suffixForFileName(const QString &fileName) const

상세 설명

MIME 유형 데이터베이스는 freedesktop.org의 shared-mime-info 프로젝트에서 제공합니다. 대부분의 Windows, macOS 및 iOS 시스템에서와 같이 시스템에서 MIME 유형 데이터베이스를 찾을 수 없는 경우, Qt는 자체 사본을 사용합니다.

사용자 정의 MIME 유형을 정의하려는 애플리케이션은 MIME 정의가 검색되는 위치에 XML 파일을 설치해야 합니다. 이러한 위치는 다음을 통해 조회할 수 있습니다.

using namespace Qt::StringLiterals;
// ...
QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "mime/packages"_L1,
                          QStandardPaths::LocateDirectory);

일반적인 유닉스 시스템에서는 이 경로가 /usr/share/mime/packages/이지만, 환경 변수 ` XDG_DATA_DIRS`를 설정하여 디렉터리 목록을 확장할 수도 있습니다. 예를 들어, ` XDG_DATA_DIRS `에 `/opt/myapp/share`를 추가하면 /opt/myapp/share/mime/packages/에서도 MIME 정의가 검색됩니다.

다음은 MIME XML의 예시입니다.

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
  <mime-type type="application/vnd.qt.qmakeprofile">
    <comment xml:lang="en">Qt qmake Profile</comment>
    <glob pattern="*.pro" weight="50"/>
  </mime-type>
</mime-info>

데이터를 기반으로 MIME 유형을 감지하기 위한 “매직(magic)” 정의 등을 포함하여 XML MIME 정의의 구문에 대한 자세한 내용은 http://standards에서 Shared Mime Info 사양을 참조하십시오.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html

유닉스 시스템에서는 성능 향상을 위해 바이너리 캐시가 사용됩니다. 이 캐시는 "update-mime-database path" 명령어로 생성되며, 여기서 path는 위 예시의 경우 /opt/myapp/share/mime이 됩니다. MIME 유형 정의 파일을 설치할 때 이 명령어를 반드시 실행하십시오.

QMimeDatabase db;
QMimeType mime = db.mimeTypeForFile(fileName);
if (mime.inherits("text/plain")) {
    // The file is plain text, we can display it in a QTextEdit
}

QMimeType 및 MIME Type Browser도 참조하십시오 .

멤버 유형 문서

enum QMimeDatabase::MatchMode

이 열거형은 파일을 MIME 유형과 매칭하는 방식을 지정합니다.

상수값설명
QMimeDatabase::MatchDefault0x0파일 이름과 내용을 모두 사용하여 일치 항목을 찾습니다.
QMimeDatabase::MatchExtension0x1일치 여부를 확인하는 데 파일 이름만 사용됩니다
QMimeDatabase::MatchContent0x2일치 항목을 찾을 때 파일 내용이 사용됩니다

멤버 함수 문서

QMimeDatabase::QMimeDatabase()

QMimeDatabase 객체를 생성합니다.

조회를 수행해야 할 때마다 QMimeDatabase 인스턴스를 생성해도 전혀 문제가 없습니다. MIME 유형의 구문 분석은 필요에 따라(shared-mime-info가 설치된 경우) 또는 첫 번째 인스턴스가 생성될 때(XML 파일을 직접 구문 분석하는 경우) 수행됩니다.

[noexcept] QMimeDatabase::~QMimeDatabase()

QMimeDatabase 객체를 삭제합니다.

QList<QMimeType> QMimeDatabase::allMimeTypes() const

사용 가능한 모든 MIME 유형의 목록을 반환합니다.

이는 예를 들어 MIME 유형 편집기에서 사용자에게 모든 MIME 유형을 표시하는 데 유용할 수 있습니다. 다만 다른 경우에는 꼭 필요한 경우가 아니면 사용하지 마십시오. 성능상의 이유로 mimeTypeForXxx() 메서드를 사용하는 것이 좋습니다.

QMimeType QMimeDatabase::mimeTypeForData(QIODevice *device) const

device 에 포함된 데이터의 MIME 유형을 반환합니다.

항상 유효한 MIME 유형이 반환됩니다. device 에 포함된 데이터가 알려진 MIME 유형 데이터와 일치하지 않는 경우, 기본 MIME 유형(application/octet-stream)이 반환됩니다.

QMimeType QMimeDatabase::mimeTypeForData(const QByteArray &data) const

data 에 대한 MIME 유형을 반환합니다.

항상 유효한 MIME 유형이 반환됩니다. data 가 알려진 MIME 유형 데이터와 일치하지 않는 경우, 기본 MIME 유형(application/octet-stream)이 반환됩니다.

QMimeType QMimeDatabase::mimeTypeForFile(const QFileInfo &fileInfo, QMimeDatabase::MatchMode mode = MatchDefault) const

fileInfo 에 대한 MIME 유형을 반환합니다.

항상 유효한 MIME 유형이 반환됩니다.

기본 매칭 알고리즘은 필요한 경우 파일 이름과 파일 내용을 모두 확인합니다. 파일 확장자가 내용보다 우선하지만, 파일 확장자가 알려지지 않았거나 여러 MIME 유형과 일치하는 경우에는 내용이 사용됩니다. fileInfo 가 유닉스 심볼릭 링크인 경우, 대신 해당 링크가 가리키는 파일이 사용됩니다. 파일이 알려진 패턴이나 데이터와 일치하지 않으면 기본 MIME 유형(application/octet-stream)이 반환됩니다.

mode 가 MatchExtension 로 설정된 경우, 파일 내용이 아닌 파일 이름만 사용됩니다. 파일이 실제로 존재하지 않아도 됩니다. 파일 이름이 알려진 패턴과 일치하지 않으면 기본 MIME 유형(application/octet-stream)이 반환됩니다. 이 파일에 일치하는 MIME 유형이 여러 개 있는 경우, 알파벳 순서로 첫 번째 유형이 반환됩니다.

mode 가 MatchContent 로 설정되어 있고 파일이 읽기 가능한 경우, MIME 유형을 결정하는 데 파일 내용만 사용됩니다. 이는 입력 장치로 QFile 를 사용하여 mimeTypeForData 를 호출하는 것과 동일합니다.

fileInfo 절대 경로 또는 상대 경로를 지정할 수 있습니다.

QMimeType::isDefault() 및 mimeTypeForData()도 참조하십시오 .

QMimeType QMimeDatabase::mimeTypeForFile(const QString &fileName, QMimeDatabase::MatchMode mode = MatchDefault) const

mode 를 사용하여 fileName 라는 파일의 MIME 유형을 반환합니다.

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

QMimeType QMimeDatabase::mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const

지정된 fileName 및 device 데이터에 대한 MIME 유형을 반환합니다.

이 오버로드는 파일이 원격에 위치해 있고, 장치에서 해당 데이터의 일부를 다운로드하기 시작한 경우에 유용할 수 있습니다. 이를 통해 원격 파일에 대해서도 완전한 MIME 유형 매칭을 수행할 수 있습니다.

장치가 열려 있지 않은 경우, 이 함수에 의해 장치가 열리고 MIME 유형 감지가 완료된 후 닫힙니다.

항상 유효한 MIME 유형이 반환됩니다. device 데이터가 알려진 MIME 유형 데이터와 일치하지 않는 경우, 기본 MIME 유형(application/octet-stream)이 반환됩니다.

이 메서드는 필요한 경우 파일 이름과 파일 내용을 모두 검토합니다. 파일 확장자가 내용보다 우선하지만, 파일 확장자가 알려지지 않았거나 여러 MIME 유형과 일치하는 경우에는 내용이 사용됩니다.

QMimeType QMimeDatabase::mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const

지정된 fileName 및 장치 data 에 대한 MIME 유형을 반환합니다.

이 오버로드는 파일이 원격에 위치하고 해당 파일의 일부 데이터를 다운로드하기 시작한 경우에 유용할 수 있습니다. 이를 통해 원격 파일에 대해서도 완전한 MIME 유형 매칭을 수행할 수 있습니다.

항상 유효한 MIME 유형이 반환됩니다. data 가 알려진 MIME 유형 데이터와 일치하지 않는 경우, 기본 MIME 유형(application/octet-stream)이 반환됩니다.

이 메서드는 필요한 경우 파일 이름과 파일 내용 모두를 확인합니다. 파일 확장자가 내용보다 우선하지만, 파일 확장자가 알려지지 않았거나 여러 MIME 유형과 일치하는 경우에는 내용이 사용됩니다.

QMimeType QMimeDatabase::mimeTypeForName(const QString &nameOrAlias) const

nameOrAlias 의 MIME 유형을 반환하며, 해당 유형이 없으면 유효하지 않은 MIME 유형을 반환합니다.

QMimeType QMimeDatabase::mimeTypeForUrl(const QUrl &url) const

url 의 MIME 유형을 반환합니다.

URL이 로컬 파일인 경우, 이 메서드는 mimeTypeForFile 를 호출합니다.

그렇지 않은 경우, HTTP와 같이 파일 이름이 큰 의미가 없는 스키마를 제외하고는 파일 이름만을 기준으로 일치 여부를 확인합니다. 이 메서드는 HTTP URL에 대해 항상 기본 MIME 유형을 반환하므로, HTTP URL을 올바르게 처리하려면 ` QNetworkAccessManager `을 사용하십시오.

항상 유효한 MIME 유형이 반환됩니다. url 가 알려진 MIME 유형 데이터와 일치하지 않는 경우, 기본 MIME 유형(application/octet-stream)이 반환됩니다.

QList<QMimeType> QMimeDatabase::mimeTypesForFileName(const QString &fileName) const

fileName 라는 파일 이름에 해당하는 MIME 유형을 반환합니다.

파일 이름이 알려진 패턴과 일치하지 않으면 빈 리스트가 반환됩니다. 이 파일에 일치하는 MIME 유형이 여러 개 있는 경우, 모두 반환됩니다.

이 함수는 파일을 열려고 시도하지 않습니다. MIME 유형을 결정할 때 파일 내용도 함께 사용하려면, 대신 mimeTypeForFile() 또는 mimeTypeForFileNameAndData()을 사용하십시오.

mimeTypeForFile()도 참조하십시오 .

QString QMimeDatabase::suffixForFileName(const QString &fileName) const

MIME 데이터베이스에 등록된 대로, ` fileName` 파일의 확장자를 반환합니다.

이를 통해 foo.tar.bz2의 경우 "tar.bz2"를 미리 선택할 수 있지만, my.file.with.dots.txt의 경우 여전히 "txt"만 선택됩니다.

© 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.