跨平台方式获取用户友好的文件类型描述
Cross-platform way to get user friendly file type description
获得用户友好的文件描述的跨平台方法是什么?
示例:
- foo.pdf->"可移植文档格式(pdf)
- bar.doc->"Microsoft Word文档">
非常感谢指向库或适当的系统API的指针。
Qt/C++解决方案是首选方案,但任何方案都可以。
目标平台是Windows和Mac OS X。如果可能的话,我更喜欢与Explorer或Finder中的描述相匹配的描述(而不是自己维护扩展映射->描述)。
GNU File命令是为Linux和OSX内置的,并且有一个版本可用于Windows(http://gnuwin32.sourceforge.net/packages/file.htm)。
文件测试每个参数,试图对其进行分类按以下顺序执行的测试集:文件系统测试、幻数测试和语言测试。成功的第一个测试会导致要打印的文件类型。打印的字体通常包含以下内容之一单词text(文件只包含打印字符和一些通用控制字符,在ASCII上读取可能是安全的终端),可执行文件(该文件包含编译某些UNIX内核或其他内核可以理解的形式的程序),或者数据意味着其他任何东西(数据通常是"二进制"或不可打印)。例外是众所周知的文件格式(核心文件,tar档案),其已知包含二进制数据。
您可以使用QProcess调用file命令并显示返回的信息。
输出看起来像:
$ file document.pdf
document.pdf: PDF document, version 1.5
$ file test.txt
test.txt: ASCII text, with CRLF, CR, LF line terminators
我认为你能从Qt中得到的最接近的是QFileInfo。
Windows通过可以通过Qt的QSettings访问的注册表来跟踪映射。但从简短的研究来看,模仿Explorer的映射可能有点棘手。
也可以使用QDesktopServices::openUrl()使用默认处理程序启动文件。
我还没有研究OSX如何或在哪里跟踪文件类型描述信息。
希望能有所帮助。
相关文章:
- 通过C++从目录中过滤特定文件类型
- Ini 文件类型名称 预期C++
- 用于随机数据访问的最有效文件类型
- Visual Studio 2019 - 设置文件类型的默认扩展名
- 如何使用C++将.trc文件类型转换为文本文件?
- 如何指定可以打开的文件类型
- 更改代码::块上的默认保存文件类型
- 使用文件对话框选择包含特定文件类型的文件夹?
- MFC,查找特定文件类型
- 搜索并限制为特定文件类型VS2017
- 是否可以将Visual Studio 2017将C 代码编译到EXE以外的文件类型中
- VIM:执行复杂文件类型的脚本和显示结果
- 功能"fread()"不读取特定文件类型?
- 如何在用户修改后使用旧版驱动程序中的 PE 标头获取原始文件类型
- 在makefile中更改构建规则以构建多种文件类型
- 使QT/C 程序显示其文件类型,如Windows上已知
- 是否可以将其他文件类型添加到Visual Studios清理过程中
- 强制将特定文件编译为Objective-C/文件类型,但将整个项目编译为Objective C++
- 如何从FindFirstFile()中获取多个文件类型是可能的吗
- 跨平台方式获取用户友好的文件类型描述