C++ 找出mime类型以及与Qt相关的应用程序

C++ 找出mime类型以及与Qt相关的应用程序,c++,qt,mime-types,C++,Qt,Mime Types,如何找到给定文件的mime类型或内容类型? 我无法使用后缀,因为该文件可能被重命名 可能的补充是将它们分类为jpg、gif、png等图像文件,可以通过编辑应用程序打开,这些应用程序已在操作系统中设置 提前谢谢。什么平台?在*nix上,您应该参考程序文件是如何操作的,它基于一些试探法,包括检查文件的前几个字节(许多文件格式以固定头开始,包括许多图像格式) 如果您使用的是Windows,*nixfile命令可能仍然具有指导意义,即使您无法直接重用其代码。Windows API中可能还有更好的解决方案

如何找到给定文件的mime类型或内容类型? 我无法使用后缀,因为该文件可能被重命名

可能的补充是将它们分类为jpg、gif、png等图像文件,可以通过编辑应用程序打开,这些应用程序已在操作系统中设置


提前谢谢。

什么平台?在*nix上,您应该参考程序
文件
是如何操作的,它基于一些试探法,包括检查文件的前几个字节(许多文件格式以固定头开始,包括许多图像格式)


如果您使用的是Windows,*nix
file
命令可能仍然具有指导意义,即使您无法直接重用其代码。Windows API中可能还有更好的解决方案(我不是Windows程序员)。

这可能会有所帮助,这是用C#实现的,但我认为你可以理解

您可以使用某种类从qt访问Windows注册表,或者直接从qt使用Windows API


我不是qt程序员。

你不能,不是从qt内部


但是,如果您只想用正确的应用程序显示文件,则可以使用,它包装了
open
(Windows/OSX)和
xdg open
(Unix)。URL也可以是本地文件(在这种情况下,用于构造URL)。

用于对图像文件进行分类。用于Qt,仅用于图像文件

QByteArray imageFormat = QImageReader::imageFormat(fileName); //Where fileName - path to your file

将imageFormat进一步映射到mime类型并不复杂

它看起来还没有提供这种功能。但是,您可能需要查看libmagic库,它完成了
文件
和其他类似命令的功能。假设库得到正确维护,随着时间的推移,它将包含新的MIME类型。据我所知,它是文件工具套件的一部分。在Debian系统下,执行以下操作:

sudo apt-get install libmagic-dev

要获取开发库并使用,请包括使用它。

另请参见有关超级用户的问题: