C# · 12月 23, 2021

c# – 通过查看其二进制内容以编程方式找到文件类型.可能?

我有一个c#组件,它将收到以下类型的文件
.doc,.pdf,.xls,.rtf

这些将由调用siebel传统应用程序作为文件流发送.

所以…

[LegacyApp]>> {二进制文件流}>> [零件]

遗留应用程序是一个黑盒子,无法修改以告诉组件它发送的文件类型(doc,pdf,xls).组件需要读取此二进制流并在具有正确扩展名的文件系统上创建文件.

有任何想法吗?

谢谢你的时间.

解决方法 在基于 Linux / Unix的系统上,您可以使用file命令,但我假设您想在代码中自己手动执行此操作…

如果你有权访问的是文件的字节流,那么你需要独立处理每种文件类型.

执行您想知道的大多数程序/组件通常会读取前几个字节并根据它进行分类.例如,GIF文件以下列之一开头:GIF87a或GIF89a

许多文件格式在文件开头具有相同的签名,或者具有相同的标头格式.此签名称为magic number as described by me on this post.

入门的好地方是转到www.wotsit.org.它包含可按文件类型搜索的文件格式规范.您可以查看要处理的重要文件类型,看看是否可以在这些文件格式中找到一些识别因素.

您还可以搜索Google以尝试查找执行此分类的库,或查看文件命令的源代码.