【问题标题】:How to distinguish between movie and image如何区分电影和图像
【发布时间】:2013-07-25 03:05:16
【问题描述】:

有什么“好”的方法来区分电影文件和图像文件吗? 我想知道我的“std::wstring filePath”到底是什么——电影或图像。 因此,我可以在使用已知文件类型的情况下更进一步。

换句话说,我有两个类 MyImageMyMovie 在它们的构造函数中都需要文件路径。我想在创建其中一个类之前以某种方式验证文件的路径。

bool isMovie(const std::wstring & filePath);
bool isImage(const std::wstring & filePath);

当然我考虑过文件扩展名,但我不确定它是否良好且不易出错的解决方案。那么使用文件扩展名或任何其他可行的解决方案是不是很好?

提前致谢

【问题讨论】:

  • 这看起来与 Qt 无关。为什么是“qt”标签?
  • 假设文件被正确命名并且您已经详尽地列出了所有可能的扩展名,这可能就足够了。如果你不能假设那么多,那么可能有某种方法,但我无法帮助你。
  • Nikos,我放了一个“qt”标签,因为我在这个项目中使用 Qt,所以也许有人可以建议 Qt 特定的代码。

标签: c++ image file-format movie


【解决方案1】:

您可以使用libmagic 来检测它是什么类型的文件。您传入文件路径,它会为您提供文件的文本描述或 MIME 类型。

【讨论】:

    【解决方案2】:

    通常文件有特殊的所谓魔术字节。我可以控制我将使用它的规范。如果您尝试打开 zip、gif 或其他二进制文件,通常可以在其中找到一些独特的字符串。

    有一个名为 file 的 unix 工具实用程序提供了此类功能,因此可能存在某种标准。

    SQLite 3 提供了一个nice example。查看 1.2.11.2.5。因此,不仅给出了它是 SQLite 3 DB 的信息,而且还给出了附加的应用程序 ID,因此其他工具可以识别它是哪个应用程序的 DB。

    当我在玩二进制文件时,我个人使用文件的几个前字节来为我的文件编码类型和版本信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 2013-06-24
      • 2016-02-27
      • 2012-02-10
      • 2017-12-10
      相关资源
      最近更新 更多