C#如何识别文件格式?

来源:百度知道 编辑:UC知道 时间:2024/06/25 10:21:26
我想在C#程序里处理文件。对于不同的文件格式,要作不同的处理。然而,有些文件并没有后缀名,或者虽然有后缀名,但后缀名与格式是不匹配的。那么,该如何在程序里把文件的真正格式识别出来?谢谢各位帮忙!
我的意思是,格式不对也可以强改后缀名的。例如我在WORD随便打几个字母,存成文件后我可以重命名为(.TIF)后缀。而且重命名后,文件图标也的确改了。但是双击打开后,由于文件实际上不是TIF格式,所以打开会出错。我现在想知的就是,程序里如何判别这种情况?

读取文件头, 可以解决问题。例如,你要查看一个图片是否“真”的是“jpg”格式的。那么就需要提取2个字节,如果文件头标示是“255216”就说明是“jpg”格式的。代码如下:
FileStream fs = new FileStream(@"C:\1.jpg", FileMode.Open, FileAccess.Read);
byte[] imagebytes = new byte[fs.Length];
BinaryReader br = new BinaryReader(fs);//二进制文件读取器
imagebytes = br.ReadBytes(2);//从当前流中将2个字节读入字节数组中
string s = "";
for (int i = 0; i < imagebytes.Length; i++)
{
s += imagebytes[i];
}
if(s=="255216")
Console.WriteLine("是jpg格式");
else
Console.WriteLine("不是jpg格式");

各种文件格式文件头占的字节不一样,譬如:jpg,2个字节;png,8个字节;gif,6个字节。你只需要改变读取的字节数,在判断就可以了。

(首先)要让系统显示文件后缀名称。做法:我的电脑点进去 里面的工具点文件选项里再点查看里有个隐藏已知类型的扩张名购掉
(然后)获取文件名称。然后得到文件的后缀名,比如txt(文本文件)或是doc(word文档),在根据具体情况进行判断即可。

把文件名的后缀名全部显示出来,在程序里 fil