获取用户友好的文件描述的跨平台方法是什么?
例子:
- foo.pdf -> "可移植文档格式 (PDF)
- bar.doc -> "Microsoft Word 文档"
指向库或适当系统 API 的指针将不胜感激。
首选 Qt/C++ 解决方案,但一切都很好。
目标平台是 Windows 和 Mac OS X。如果可能的话,我希望描述与在 Explorer 或 Finder 中找到的内容相匹配(而不是自己维护扩展映射 -> 描述)。
我认为您可以从 Qt 中获得的最接近的是QFileInfo。
Windows 通过可以通过 Qt 的QSettings访问的注册表跟踪映射。但仅从简短的研究来看,模仿 Explorer 的映射可能有点棘手。
您还可以使用QDesktopServices::openUrl()使用默认处理程序启动文件。
我还没有研究过 OSX 如何或在何处跟踪文件类型描述信息。
希望有帮助。
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