问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Java判断文件类型是二进制文件还是文本文件

发布网友 发布时间:2022-04-27 05:18

我来回答

1个回答

热心网友 时间:2022-06-26 20:10

下面转载一下别人的方法

1、判断字符范围。
该方式主要是针对英文字符的,如果文件中有中文字符就会判断失败。比如:

char c;
f.read(&c, sizeof(c));
if (c < 32 && c != 9 && c != 10 && c != 13)
{
return;
}

该方式针对256以下的字符问题都不大,一旦遇到双字节中文就会出现c为负数的情况,导致判断失败。

2、判断有没有char(0)字符。
二进制文件基本上都会有char(0),注意,是“基本上” 。
我尝试通过这个方式来判断,发现判断正确率很高,我手头的二进制STL文件都能够判断正确,但是总觉得这种方式不够保险,如果刚好某个二进制文件没有char(0)怎么办???

3、文件大小对比法。
以文本方式 打开文件,取一段数据(比如1024字节),存为string,再写入tmp文件,如果新文件的大小还是1024字节,应该就是文本文件了。否则就是二进制文件。
该方法我没有认证,但是纯粹从描述上来说,还是比较有效的。以我的理解,该方法在本质上还是方法1和方法2的结合,相比方法1来说,方便了中文字符的判断,相比方法2来说,更为保险一些。其本质就是通过将二进制文件转换为字符串,将一些无效字符过滤掉(比如char(0),回车等等),导致大小发生变化。但同样的该方法也有漏洞,如果二进制文件中刚好没有回车,没有char(0)怎么办???

4、无效字符比例法。
该方法是基于方法1的一种概率判断,遍历文件中的所有字符,对方法1中认定的无效字符进行计数,如果无效字符数量达到一定比例(这个比例值是经验值,根据自己的程序运行环境自由设定),则认为是二进制文件。
同方法1一样,无法对中文字符进行有效的判断,一个全为中文的文本文件,肯定会被认定为二进制文件。

5、严格对比法。
逐字节读取,然后满足以下任何一个条件那么就是二进制文件:
1)所读取字节大于127并且小于160;
2)所读取字节大于等于160并且不成对出现;(注:大于等于160并成对出现的是汉字,其他UNICODE字符集编码格式不是很清楚)
3)所读取字节小于32并且不等于9(TAB)、10(换行) (注: 10 是UNIX格式文本换行)
4)所读取字节小于32并且等于13(回车)但是之后的字节并不是10(换行) (注:13 10 是DOS格式文本换行)
该方法是最严谨的,也是判断最复杂的,效率最低的,一个较大的文件判断起来肯定会很慢。
Java判断文件类型是二进制文件还是文本文件

以文本方式 打开文件,取一段数据(比如1024字节),存为string,再写入tmp文件,如果新文件的大小还是1024字节,应该就是文本文件了。否则就是二进制文件。该方法我没有认证,但是纯粹从描述上来说,还是比较有效的。以我的理解,该方法在本质上还是方法1和方法2的结合,相比方法1来说,方便了中文字符...

java 判断文件类型

一般判断一个文件是否是二进制文件,只是判断一下文件的内容中是否含有0x00-0x07这八个字符内容,如果有的话,就是二进制文件。

如何判断某个文件是否为二进制文件,用Java代码来实现

5.BMP - 文件头标识 (2 bytes) 42 4D B M 6.PCX - 文件头标识 (1 bytes) 0A 7.TIFF - 文件头标识 (2 bytes)4D 4D 或 49 49 8.ICO - 文件头标识 (8 bytes) 00 00 01 00 01 00 20 20 9.CUR - 文件头标识 (8 bytes) 00 00 02 00 01 00 20 20 10.IFF -...

java是什么文件格式

Java作为一种编程语言,其文件格式主要分为两种:1. .java文件,这是一种保存源代码的文本文件,文件名通常以类名作为前缀。当你使用javac命令编译*.java文件时,会生成对应的.class文件。2. .class文件,则是用于保存Java类的二进制编码形式以及Class对象。Class对象包含了描述类的所有信息,如类的名称...

java 怎么判断一个文件的类型,比如说是txt,jpg,xls,exe,等等,说后缀名...

二进制与二进制本身没什么区别,区别在于文件结构,常见的图片、xls等等都是有相对固定的文件结构的,比如说总是以哪几个字节开始,后面跟的是什么数据,数据有多长等等。要判断文件类型,一般常用的方法是也是基于这个原理,通过文件前面的固定字节来判断,java也不例外,百度搜索一下 java 文件 类型 判断...

如何判断文件是文本还是二进制求解答

这些答案都算靠谱,也有不靠谱的。居然有人回答:文本终究也是二进制的,所以你没办法判断!NND,这就好像说:Women 本质上就是 Men(人),所以你没法判断 Women 和 Men (男人)言归正传,除了以上的三种方法外,如果要求不是那么严格,可以用文件的mime type来进行判断,以下的Groovy代码虽然不太直观...

JAVA的后缀文件

.java的是源文件,本质上就是个文本文件。.class的是java编译器,编译源文件所得的java字节码文件,是二进制的。真正能运行的是这个.class文件,java虚拟机(解释器)可以解释并运行编译出来的.class文件

Java进阶之路66问 | 谈谈对文本文件和二进制文件的理解

编辑器能区分打开的是文本文件还是二进制文件,主要是依据文件头部的魔数(Magic Number)。许多文件格式在开头几个字节包含特定的魔数,用于识别文件类型。编辑器在打开文件时首先读取魔数,如Word文档的魔数是0xD0CF11E0,如果魔数与预设匹配,编辑器就知道文件类型,按照文本文件规则解析底层二进制。文件后缀...

java中.java与.class区别是什么?

.java文件你可以认为只是一个文本文件, 这个文件即是用java语言写成的程序,或者说任务的代码块。.class文件本质上是一种二进制文件, 它一般是由.java文件通过 javac这个命令(jdk本身提供的工具)生成的一个文件, 而这个文件可以由jvm(java虚拟机)装载(类装载),然后进java解释执行, 这也就是...

java文件格式是什么?

Java一般存在两种文件格式,如下:1.*.java文件是保存源代码的文本文件 (*代表类名)使用 javac .java可以编译该文件 使用 java 可以运行该类 2.*.class是用于保存 Java类的 二进制编码以及Class对象,每一个 Java类都有一个解释该类特征的 Class对象。*.jar文件 是一种压缩文件格式 ...

文本文件 二进制文件 文本文件和二进制文件区别 简述文本文件和二进制文件的区别 文本文件是文本文档吗 二进制文件转换为文本 文本文档和文本文件一样吗 文档文件与文本文件的区别 为什么二进制比文本文件小 什么是二进制文件
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
平安e家保是什么险 2023年高级会计师报名时间和条件 2022高级会计师报考条件要求是什么? 问几个英文语法问题,希望能正确回答~ 女生锁骨下长痣,左右都有 不是很对称 寓意什么呐? 抖音上传照片音乐短怎么办 断夜奶好方法 婴儿断夜奶最佳方法 建设银行,你打算坑害多少优质客户? 【PS教程】如何做出凹陷字体效果的氛围海报 求初一作文600字 以&quot;规矩&quot;为话题的记叙文 关于规则的作文,记叙文,自己亲身经历过的,500字 关于规矩的作文400字 java 判断字符串什么编码类型 前女友发QQ动态迟来的阳光救不活枯萎的玫瑰,我想挽回她该怎么接? 解梦我把玫瑰花从茎上掰下,一次两支,掰了两次 梦见玫瑰花,很香我把他用报纸,包起来了 解梦——桌上放一枝玫瑰花 梦见和男友看见一大片枯萎的玫瑰是怎么个情况? 梦见了前任送我粉色枯萎的玫瑰是什么意思 解梦:梦见喜欢的人送自己一朵枯萎的玫瑰 解梦,一棵树下,有两棵黄玫瑰 梦到有人卖一大桶带钻石的玫瑰花,很漂亮,一开始我没有买到,到后来又有一个老婆婆在卖,最后买到了没有 全民超人汉考克中的配乐很好听,谁知道? 全民超人汉考克怎么把酒吧女吓跑了? 有关超人的美剧 假如人类的大脑全部开发之后,会发生什么呢? 《超人归来》给人的启示? 《全民超人》中公关先生重塑超人汉考克形象的公关活动成功吗 全民超人汉考克的剧情简介 如何判断一个文本文件内容的编码格式UTF 以规矩为话题的600字的作文 如何判断文本文件的编码格式 java 判断字符串什么编码类型 / 蓝讯 关于规则的作文,记叙文!!! 有关规则的作文400字 关于规矩的作文500字 关于围绕规矩为主题的作文? 以“规矩方圆”为话题,写一篇记叙文或议论文。谢谢 遵守规则打破规则的作文大全记叙文 乐蒙手机微信怎么加秘密 和面时酵母和糖及盐能一起放吗?放的先后顺序有讲究吗 发面时加盐又加糖可以吗 食盐可以跟面粉一起合面做馒头吗? 和面的时候酵母能和盐和糖直接接触吗?为什么? 和的面时加了盐和糖怎么还是没发起? 活期理财和定期理财有什么区别 活期理财产品有哪些? 银行的活期存款和短期理财产品有什么区别? 问下活期理财和定期理财相比有哪些不同点更适合投资?