论坛首页 入门技术论坛

java中如何判断一个文件是二进制文件还是文本文件?

浏览 12761 次
该帖已经被评为新手帖
作者 正文
   发表时间:2006-12-13  
现在的做法是把文件读进来,逐个解析每一个byte,如果有一个byte<0那么断定这个文件是二进制的,这在纯英文的环境下可以工作,但是如果一个文本包含了中文字符,那么这个文件也会被判断为二进制文件。
我在网上看看到有人也是逐个比较每一个byte,只不过是如果有一个byte=0就判断为二进制文件,这样做有依据吗?
大家有没有什么解决办法?
   发表时间:2006-12-13  
判断这个干什么用?
0 请登录后投票
   发表时间:2006-12-13  
文件比较,如果是二进制的就不比较了
0 请登录后投票
   发表时间:2006-12-13  
投新手贴的人我觉得不厚道!
0 请登录后投票
   发表时间:2006-12-13  
Ivan Li 写道
文件比较,如果是二进制的就不比较了

具体做什么功能的,版本控制系统?
系统给个默认的文本文件后缀名列表,比如txt, xml, jsp等等,不在这个列表上的统一认为二进制,当然用户可以根据实际需求添加修改这个列表。
0 请登录后投票
   发表时间:2006-12-13  
对是文件版本控制,这倒是一个解决的办法,从文件byte读就没办法了吗?
0 请登录后投票
   发表时间:2006-12-13  
个人认为这个很难 都是二进制数据 如果没有人告诉你是文本或者二进制 那根本无法知道这个二进制数据到底是什么意义?
就像 告诉你01010001 问这是什么意思? 谁也不能准确回答
0 请登录后投票
   发表时间:2006-12-13  
还是根据后缀名靠谱,文本文件本质上也是二进制的。

btw:投新手的确实不厚道
0 请登录后投票
   发表时间:2006-12-13  
在英文环境下还是很简单的,判断每个byte的值,如果不是byte的值不是在32-127之间,同时又不是回车或换行的化,就认为它是二进值的就可以,但是如果又英文字符,就很难判断了
0 请登录后投票
   发表时间:2006-12-13  
投新手的19票,差不多是一个资深会员的。
简单一点的通过后缀名就可以判断。再深入一点,可以以文本方式打开文件,存为string,再写入新文件,如果新旧文件的大小一样,应该就是文本文件了。否则就是二进制文件。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics