0

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

例子:

  1. foo.pdf -> "可移植文档格式 (PDF)
  2. bar.doc -> "Microsoft Word 文档"

指向库或适当系统 API 的指针将不胜感激。

首选 Qt/C++ 解决方案,但一切都很好。

目标平台是 Windows 和 Mac OS X。如果可能的话,我希望描述与在 Explorer 或 Finder 中找到的内容相匹配(而不是自己维护扩展映射 -> 描述)。

4

2 回答 2

1

我认为您可以从 Qt 中获得的最接近的是QFileInfo

Windows 通过可以通过 Qt 的QSettings访问的注册表跟踪映射。但仅从简短的研究来看,模仿 Explorer 的映射可能有点棘手。

您还可以使用QDesktopServices::openUrl()使用默认处理程序启动文件。

我还没有研究过 OSX 如何或在何处跟踪文件类型描述信息。

希望有帮助。

于 2012-10-04T20:02:17.887 回答
1

GNU File 命令是为 Linux 和 OSX 内置的,并且有一个适用于 Windows 的版本(http://gnuwin32.sourceforge.net/packages/file.htm)。

File 测试每个参数以尝试对其进行分类。共有三组测试,按此顺序执行:文件系统测试、幻数测试和语言测试。第一个成功的测试会导致打印文件类型。打印的类型通常包含以下文字之一:文本(文件仅包含打印字符和一些常见的控制字符,并且可能在 ASCII 终端上可以安全阅读)、可执行文件(文件包含以表格形式编译程序的结果)某些 UNIX 内核或其他内核可以理解),或者数据意味着其他任何东西(数据通常是“二进制”或不可打印的)。已知包含二进制数据的文件格式(核心文件、tar 档案)除外。

您可以使用 QProcess 调用文件命令并显示返回的信息。

输出看起来像:

$ file document.pdf
document.pdf: PDF document, version 1.5
$ file test.txt
test.txt: ASCII text, with CRLF, CR, LF line terminators
于 2012-10-04T20:26:05.820 回答