跨平台方式获取用户友好的文件类型描述

Cross-platform way to get user friendly file type description

本文关键字:文件 类型 描述 方式 获取 用户 跨平台      更新时间:2023-10-16

获得用户友好的文件描述的跨平台方法是什么?

示例:

  1. foo.pdf->"可移植文档格式(pdf)
  2. 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如何或在哪里跟踪文件类型描述信息。

希望能有所帮助。