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

时间:2012-10-04 19:45:46

标签: c++ windows macos qt

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

示例:

  1. foo.pdf - > “可移植文件格式(PDF)
  2. bar.doc - > “Microsoft Word文档”
  3. 非常感谢图书馆或相应系统API的指针。

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

    目标平台是Windows和Mac OS X.如果可能的话,我希望这些描述与资源管理器或Finder中的内容相匹配(而不是维护扩展地图 - >我自己的描述。)

2 个答案:

答案 0 :(得分:1)

我认为你离Qt最接近的是QFileInfo

Windows通过注册表跟踪可以通过Qt QSettings访问的映射。但仅仅从brief research来看,模仿资源管理器的映射似乎有点棘手。

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

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

希望有所帮助。

答案 1 :(得分:1)

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

  

文件测试每个参数以尝试对其进行分类。有三种   按以下顺序执行的测试集:文件系统测试,幻数   测试和语言测试。成功的第一个测试导致了   要打印的文件类型。打印的类型通常包含一个   单词文本(该文件仅包含打印字符和一些   常见的控制字符,可以安全地读取ASCII   终端),可执行(该文件包含编译的结果   程序的形式可以理解为某些UNIX内核或其他内容),或者   数据意味着什么(数据通常是“二进制”或   非打印)。例外是众所周知的文件格式(核心文件,   tar archives)已知包含二进制数据。

您可以使用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