【发布时间】:2016-03-11 18:54:51
【问题描述】:
如您所知,文件具有扩展名和 mime 类型。
但是这两个属性不够智能,两个确定文件的确切类型。例如,我有一个.exe 文件,我将它的扩展名重命名为两个.png。因此,如果我尝试以编程方式找出它的类型或 mime 类型,结果将是 images/png 或 .png 但我想读取文件头并找出确切的文件类型。是否可以使用 C# 语言以编程方式实现?
编辑
当然,有些问题与我的类似,但您知道文件以十六进制字符串开头,例如:
"JPEG", ".jpg", 0xFF, /*0xD*/ 0xD8, 0xFF, 0xE0, null, null, 0x4A, 0x46, 0x49, 0x46, 0x00
"Graphics Interchange Format 87a", ".gif", 0x47, 0x49, 0x46, 0x38, 0x37, 0x6
等等
文件类型是否有类似的起始十六进制格式?
【问题讨论】:
-
是的,但是您应该确切地知道任何现有文件中所谓的“标题”的内容是什么。
-
您可能需要限制问题的范围;如果你想测试 png 特别是有据可查的(这里的规范:w3.org/TR/PNG)所以你可以为此编写一个解析器。
-
可能是Guessing a file type based on its content 会是一个有趣的问题来看看
标签: c# file-extension