java验证文件 想用java对一个文件的FileInputStream进行验证,判断是哪一种文件格式。也就是判断不同文件类型的二进制标识?高手有知道的告诉一下,谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【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 JAVA的File类似乎没办法判断是什么类型的文件。以为java对文件的操作采用的是流,不管什么类型的文件操作的对象都是byteBuffer,不会由于类型不同而无法进行读取,写入等操作。所以,判断类型没意义。 太难,帮你找了一下http://www.cnblogs.com/jhtchina/articles/93412.htmlhttp://www.programfan.com/club/showpost.asp?id=5409 晕,更正错误,有,才写了个例子试了一下~~in.read();读出来的第一个byte是其类型又找到了盲区了。 可以的,linux系统就是根据文件的信息头来区别文件类型的,不想window。你可以去查一下具体文件的头信息 周星星这个好:判断文件类型(文件的真正类型,不是根据扩展名判断),通过文件头来判断 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 如果只是想得到诸如 "文本文件", "bmp位图文件"这样的信息,可以使用 javax.swing.filechooser.FileSystemView.getFileSystemView().getSystemTypeDescription(File); 就可以像在os里一样显示出该后缀名的文件的信息, 如果要确实判断这个文件是否就是这种类型,是不是再挂羊头卖狗肉,只有读了才知道 补充一个“ocx:MZ”另外,17楼的为啥那么麻烦呢?直接read(),或者readInt()不很省事? List遍历问题 求救zip解压的问题。 菜鸟如何学JAVA 如何修改表头的title JAVA中有没有响应“操作系统关闭”的监听器? 怎样用eclipse写c/c++ 请问如何获得当前java运行环境的路径? java大数值计算问题! tomcat4.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
byteBuffer,不会由于类型不同而无法进行读取,写入等操作。所以,判断类型没意义。
http://www.cnblogs.com/jhtchina/articles/93412.htmlhttp://www.programfan.com/club/showpost.asp?id=5409
晕,更正错误,有,才写了个例子试了一下~~in.read();读出来的第一个byte是其类型又找到了盲区了。
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
"文本文件", "bmp位图文件"这样的信息,可以使用
javax.swing.filechooser.FileSystemView.getFileSystemView().getSystemTypeDescription(File);
就可以像在os里一样显示出该后缀名的文件的信息,
如果要确实判断这个文件是否就是这种类型,是不是再挂羊头卖狗肉,只有读了才知道