string imageurl = @"E:\meishi.png";
                int i = imageurl.LastIndexOf('.');
                string newstr = imageurl.Substring(i + 1);
                FileStream Fs = new FileStream(imageurl, FileMode.Open, FileAccess.Read);
                BinaryReader rdr = new BinaryReader(Fs);
                string fileClass = "";
                byte buffer;
                buffer = rdr.ReadByte();
                fileClass = buffer.ToString();
                buffer = rdr.ReadByte();    //我想问一下,这里为什么要读取2次里? 一次是不是读取不完整 还是怎么回事
                fileClass += buffer.ToString();  
                rdr.Close();
                Fs.Close();

解决方案 »

  1.   

    刚好前两天看过BMP文件格式,可以回答你这个问题,这类问题原理是相同的。
    windows下文件的前两个字节,代表了这个文件的类型。比如 .bmp 文件(Bitmap位图)的前两个字节(Byte)就是 BM ,如果前两个字节不是 BM,那它就不是一个 BMP 文件。// 下面分析程序语句
    FileStream Fs = new FileStream(imageurl, FileMode.Open, FileAccess.Read);
    BinaryReader rdr = new BinaryReader(Fs);
    这两句创建了一个二进制的reader,此时已经准备好读一个文件了。buffer = rdr.ReadByte(); // 这句,读入了一个字节
    fileClass = buffer.ToString(); //这句,将刚读入的字节存放在 一个字符串里 
    buffer = rdr.ReadByte(); // 这句,读入了第二个字节
    fileClass += buffer.ToString();  // 将前两个自己结合在一起,就是这个文件的类型了。