2012-04-26 94 views
3

嗨我想检测我的应用程序中的文件类型。 libmagic是一个选项。但我不打算字符串比较,例如真正的文件类型检测

使用libmagic MP3文件输出:音频文件,ID3版本2.3.0,包含:MPEG ADTS,第三层,V1,128 kbps的,44.1千赫,JntStereo

是否有任何其他库用于True File Type Detection?

任何帮助,将不胜感激。

+0

您是否需要某种结构作为检测结果'(mime-type,默认扩展名,详细信息等)'? – 2012-04-26 12:05:37

+0

我想只有数字,如果它是可用的。 – iyasar 2012-04-26 12:11:05

+0

什么样的号码? – 2012-04-26 12:17:09

回答

3

你可以尝试通过自己的使用File Signature Table

实例来实现这一点:

Hex Signature  File Extension   ASCII Signature, File Description 

49 44 33      MP3   ID3 
               MPEG-1 Audio Layer 3 (MP3) audio file 

43 44 30 30 31     ISO   CD001 
               ISO-9660 CD Disc Image 
               This signature usually ... 
+0

这将是完美的,但我们在这里有可维护性问题。开发人员总是必须对该文件感兴趣以进行维护。我确实选择了MIME类型,它不像整数比较那样有效,但是更好一个(长文件描述的比较)。 – iyasar 2012-05-14 12:46:41

1

您错误地假定了一组文件类型的枚举。这不仅仅是文件的工作方式。您关于.mp3文件(音频)的示例自然会导致视频。 .AVI,.MKV,MPEG1,MPEG2和MPEG4视频之间的关系是什么?你无法在一个数字中捕捉到这些关系。

同样,是CD .ISO与DVD .ISO相同的文件类型?要么你分配相同数量的你没有。而且我在前面的句子中专门写了“”,因为答案取决于认为它们是否相同。

+0

我确实选择了MIME类型而不是整数比较。谢谢您的回复。 – iyasar 2012-05-14 12:48:50

+0

尽管如此,这仍然没有解决_detection_问题。 – MSalters 2012-05-14 14:58:39

+0

我不需要100%的准确性。 – iyasar 2012-05-14 17:18:37