想用java对一个文件的FileInputStream进行验证,判断是哪一种文件格式。也就是判断不同文件类型的二进制标识?高手有知道的告诉一下,谢了!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【totti_java】截止到2008-07-02 14:30:22的历史汇总数据(不包括此帖):
    发帖的总数量:2                        发帖的总分数:100                      
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:2                        未结的总分数:100                      
    结贴的百分比:0.00  %               结分的百分比:0.00  %                  
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    JAVA的File类似乎没办法判断是什么类型的文件。以为java对文件的操作采用的是流,不管什么类型的文件操作的对象都是
    byteBuffer,不会由于类型不同而无法进行读取,写入等操作。所以,判断类型没意义。
      

  3.   

    太难,帮你找了一下
    http://www.cnblogs.com/jhtchina/articles/93412.htmlhttp://www.programfan.com/club/showpost.asp?id=5409
      

  4.   


    晕,更正错误,有,才写了个例子试了一下~~in.read();读出来的第一个byte是其类型又找到了盲区了。
      

  5.   

    可以的,linux系统就是根据文件的信息头来区别文件类型的,不想window。你可以去查一下具体文件的头信息
      

  6.   

    周星星这个好:判断文件类型(文件的真正类型,不是根据扩展名判断),通过文件头来判断
                    bool xx=false;  //default sFileName is not Exe or Dll File
                    System.IO.FileStream  fs=new System.IO.FileStream(sFileName,System.IO.FileMode.Open,System.IO.FileAccess.Read);
                    System.IO.BinaryReader r=new System.IO.BinaryReader(fs);
                    string bx="";
                    byte buffer;
                    try
                    {
                        buffer=r.ReadByte();
                        bx=buffer.ToString();
                        buffer=r.ReadByte();
                        bx+=buffer.ToString();                }
                    catch (Exception exc)
                    {
                        Console.WriteLine(exc.Message);
                    }
                    r.Close();
                    fs.Close();
                    if (bx=="7790"||bx=="8297"||bx=="8075")//7790:exe,8297:rar,8075:pk
                    {
                        xx=true;
                    }
                    Console.WriteLine(bx);
                    return xx;
                    dll:MZ
                    exe:MZ
                    rar:Rar
                    zip:PK 
      

  7.   

    如果只是想得到诸如  
      "文本文件",   "bmp位图文件"这样的信息,可以使用  
       
      javax.swing.filechooser.FileSystemView.getFileSystemView().getSystemTypeDescription(File);  
       
      就可以像在os里一样显示出该后缀名的文件的信息,  
      如果要确实判断这个文件是否就是这种类型,是不是再挂羊头卖狗肉,只有读了才知道
      

  8.   

    补充一个“ocx:MZ”另外,17楼的为啥那么麻烦呢?直接read(),或者readInt()不很省事?