我已经获得了fileInputStream,如何根据fileInputStream知道我当前的fileInputStream是WORD还是excel文件类型?文件名不可做为判断标准,因为文件名都是bit类型的。

解决方案 »

  1.   

    那你得知道word和excel文件的开头格式。微软好像没有公开吧,你在网上查查吧。
      

  2.   

    请不要笑小弟,不知道这种方法可以不
    用FileInputStream的read()方法(返回为int) 读前面一串数字,(最好加上Integer.toHexString()把串压缩一下),会得到一串字符串:
    WORD为:
    d0cf11e0a1b11ae100000000000000003e030feff906000000000001000220000000010002400010
    00feffffff000021000ffffffffffffffffffffffffffffffffff(后面还有很多,主要是比较前面一串就行了)
    EXCEL为:
    d0cf11e0a1b11ae100000000000000003e030feff90600000000000100019000000001000fefffff
    f0000feffffff000018000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
    前面已有不同.对比就行了.
      

  3.   

    import java.io.*;public class c
    {
      public static void main(String[] args) throws Exception
      {
        FileInputStream fis = new FileInputStream(new File("C:/a.bit"));
        String Excel="d0cf11e0a1b11ae100000000000000003e030feff90600000000000100019000000001000fefffff";
        StringBuffer sb=new StringBuffer();
        for(int i=0;i<Excel.length();i++)
        {
          sb.append(Integer.toHexString(fis.read()));
        }
        if(sb.toString().substring(0,Excel.length()).equals(Excel)) System.out.println("是EXCEL文件");
        else System.out.println("不是EXCEL文件");
      }
    }这样写就能分别出来了/