Java io字符流读入英文_Java IO 系列教程(四)-字符输入流(2)

本文介绍字符输入流

在前面一节中,我们向一个文件中写入了一些字符,通过图片可以看出总共是6个中文字符和一个换行,总共是20个字节,可以推算出字符编码是utf-8,每个汉子占3三个字节。本文就用字符输入流来读一下。

e88b117cbb46cd75799d5d413c69e926.png

代码部分

package io.charStream;

import java.io.FileInputStream;

import java.io.FileReader;

/**

* @Author: micro cloud fly

* @Description: 字符流学习-FileReader

* @Date: Created in 10:20 上午 2020/10/20

*/

public class Demo1 {

public static void main(String[] args) throws Exception {

//文件内容为Abcdefg,当文件中有中文时,utf-8编码的每个中文占三个字节,那么每个字节读取的时候打印出来就是乱码了

FileInputStream inputStream = new FileInputStream("/Users/java0904/Pictures/imgs/1.txt");

//int count = 0;

打印

//while((count=inputStream.read())!=-1){

// System.out.println((char)count);

//}

文件内容为:希望你开心hah234,打印出来的是一片乱码

//inputStream = new FileInputStream("/Users/java0904/Pictures/imgs/2.txt");

//count = 0;

打印

//while((count=inputStream.read())!=-1){

// System.out.println((char)count);

//}

//改为用字符流进行读取,filereader内部做了编码的确认工作,即使有中文也有英文,读取也不会乱码,是不是很神奇

FileReader fileReader = new FileReader("/Users/java0904/Pictures/imgs/filewriter.txt");

//int count = 0;

//while ((count = fileReader.read()) != -1) {

// System.out.println((char) count);

//}

//也可以一次读取多个

int count = 0;

char[] cbuf = new char[1];

while ((count = fileReader.read(cbuf)) != -1) {

System.out.println("count:"+ count +", "+new String(cbuf, 0, count));

}

System.out.println("----");

}

}

输出

count:1, 你

count:1, 好

count:1,

count:1,

count:1, 我

count:1, 是

count:1, 小

count:1, 微

----

问题

以下这段代码需要格外注意下

int count = 0;

char[] cbuf = new char[1];

while ((count = fileReader.read(cbuf)) != -1) {

System.out.println("count:"+ count +", "+new String(cbuf, 0, count));

}

我们都知道java中char类型占用2个字节,而文件中的中文是占用3个字节,那么为什么一个2字节的char数组,可以装入3字节的汉字呢?

这其中一定是java搞的鬼了。

原因

java 是采用Unicode编码,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。通常Unicode占用两字节,也就说Unicode用两字节就能表示世界上全部语言。UTF-8(是针对Unicode的一种可变长度字符编码。重点是“可变”,UTF-8根据存储的字符类型不一样,他所占的字节是不一样的,例如,英文时,只占用1个字节,中文时则膨胀为3个字节。

编译后生成的class文件会把汉字转化成Unicode的两字节,也就说Java内部或者说Jvm内部对字符的编码计算基于Unicode双字节,而外部显示存储则是用UTF-8,通过这种方式从而实现两字节的Char存储UTF-8编码的字符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AWS上的应用程序自动扩展–选项及其对性能的影响

扩展软件应用程序是至关重要的,以避免由于网站的客户群或需要处理大量数据集的应用程序等增加而导致工作负载增加的性能瓶颈。云服务提供商通常是访问其他应用程序的最佳方法随需应变的资源,可根据应用程序的负载变化来扩大或缩小。 1.什么是可伸缩性&a…

【渝粤教育】电大中专电子商务网站建设与维护 (14)作业 题库

1.诚信通是阿里巴巴为从事中国国内贸易的中小企业推出的会员制网上贸易服务,主要用以解决网络贸易信用问题。 ( ) A.正确 B.错误 错误 正确答案:左边查询 学生答案:未作答 2.阿里巴巴是于1999年创立的( &am…

模拟光端机和数字光端机的优缺点介绍

视频光端机在中国的发展是伴随着监控发展开始的,常用的视频监控光端机在技术实现上分为模拟调制的光端机和数字非压缩编码光端机两大类。由于在对外接口上都是标准的基带视频接口,单从外观上是很难区分模拟光端机和数字光端机。那么,模拟光端…

【渝粤教育】电大中专药事管理与法规 (2)作业 题库

1.根据《执业药师职业资格制度规定》,取得药学类相关专业大专学历,报考执业药师考试,要求在药学或中药学岗位工作的年限为()。 A.5年 B.4年 C.3年 D.6年 错误 正确答案:左边查询 学生答案:A 2.申…

mysql全文索引含义_【分针网】MySQL全文索引应用简明教程

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼本文从以下几个方面介绍下MySQL全文索引的基础知识:1.MySQL全文索引的几个注意事项2.全文索引的语法3.几种搜索类型的简介4.几种搜索类型的实例全文索引的几个注意事项1.搜索必须在类型为fulltext的索引列上&#xff0c…

什么是DVI光端机?dvi光端机的优势有哪些?

DVI光端机是由DVI发送器(DVI-T)和DVI接收器(DVI-R)组成,通过一芯单模光纤传输DVI、VGA、Audip、RS232信号。接下来我们就来为大家详细介绍下什么是DVI光端机?感兴趣的朋友就一起来详细了解下吧!…

【渝粤教育】电大中专计算机职业素养 (2)作业 题库

1.职业素养是职业内在要求,是一个人在职业过程中表现出来的( )。 A.综合品质 B.职业道德 C.行业纪律 D.专业素质 正确 正确答案:左边查询 学生答案:A 2.职业素养的基本内容包括:职业道德、职业意识、职业技能和&#x…

【渝粤教育】电大中专跨境电子商务理论与实务 (9)作业 题库

1.跨境电子商务运营模式包括:M2C模式.B2C模式.C2C模式.BBC保税区模式.海外电商直邮。该说法( ) A.错误 B.正确 错误 正确答案:左边查询 学生答案:A 2.京东海外购的运营模…

mysql技术大会2020_2020年数据库技术大会助力技术提升

下半年的技术大会比较多,作为数据库技术从业人员,自然比较关注数据库技术大会,有幸参加过几次数据技术嘉年华,每次参会能遇到很多数据库领域的知名专家,认真聆听技术大咖的主题分享总能获得很多数据库发展动态和技术知…

什么是PCM综合语音复用设备?

PCM语音复用设备,中文称脉码调制,由A.里弗斯于1937年提出的,这一概念为数字通信奠定了基础,60年代它开始应用于市内电话网以扩充容量,使已有音频电缆的大部分芯线的传输容量扩大24~48倍。各国相继把脉码调制…

【渝粤题库】陕西师范大学400006 公共关系学 作业(专升本)

《公共关系学》作业 一 单项选择题 1.公共关系的主体是( )    A、组织 B、传播 C、公众 D、个人 2.被后人誉为公共关系之父的是( )    A、马斯洛 B、艾维李 C、韦伯 D、伯内斯 3.1923年出版…

什么是pdh光端机?pdh光端机产品优点介绍!

在数字传输系统中,有两种数字传输系列,一种叫“准同步数字系列”,简称PDH,也叫PDH光端机,PDH光端机是小容量光端机,PDH光端机一般是成对应用,也叫点到点应用,PDH光端机容量一般为4E1…

[渝粤教育] 中国地质大学 工业卫生技术 复习题 (2)

《工业卫生技术》模拟题 一.单选题 1.以下生产过程中有害因素属于生物因素的是() A.附着于皮毛上的炭疽杆菌 B.有毒物质 C.异常气压 D.生产性粉尘 2.以下选项属于室内污染的是() A.空气污染 B.气温变化 C.噪声污染 D.甲醛 3.存在于空气中的最大污染物是() A.阴离子 B.汽油 C…

使用OpenJDK 11运行JAXB xjc编译器

如文章“ 要从Java 11中删除的API ”所述,JDK 11不再包含 JAXB实现。 在本文中,我将结合使用JAXB ( 用于XML绑定的Java体系结构 ) 参考实现提供的xjc编译器和OpenJDK 11,将XML模式文件编译为Java类。 在Java SE 6之前…

java手动回收_浅谈java是如何做资源回收补救的

学习java的过程,我们经常谈论一个对象的回收,尤其是资源类型,如果没有显示的关闭,对象就被回收了,说明出现了资源泄漏。java本身为了防止这种情况,做了一些担保的方式,确保可以让未关闭的资源合…

国家开放大学2021春1108钢结构(本)题目

教育 教育 试卷代号:1108 2021年春季学期期末统一考试 钢结构(本) 试题 2021年7月 一、单项选择题(将每题正确答案的序号填入括号内,每小题2分,共计36分) 1.下面关于钢结构特点说法有误的一项…

[渝粤教育] 西南科技大学 投资经济学 在线考试复习资料(2)

投资经济学——在线考试复习资料 一、单选题 1.投资决策是经济决策的重要组成部分,是选择和决定( )的过程 A.投资资金 B.投资行动方案 C.投资机会 D.投资目的 2.下面属于第三产业的行业是( ) A.制造业 B.建筑业 C.农业 D.商业 3.重视资金的( )是正确确定项目成本和收益的不可…

光纤收发器模块如何选购,光纤收发器模块选购原则

光纤收发器的光模块模块选购一直是许多人心中的难题,为了使大家能挑到好的产品,今日飞畅科技的小编就来为大家好好说说光纤收发器的光模块如何选购,感兴趣的朋友就跟随小编一起来看看吧! 一、光纤收发器光模块如何选购&#xff1…

[渝粤教育] 西南科技大学 国际贸易理论与实务 在线考试复习资料2021版(2)

国际贸易理论与实务——在线考试复习资料2021版 一、单选题 1.根据货币数量理论,国内货币供给增加50%将导致( ) A.国内价格水平提高50% B.国内价格水平提高幅度大于50% C.国内价格水平降低50% D.国内价格水平降低幅度大于50% 答案:看左边查询 2.浮动汇率制的特点之一是( …

光纤收发器哪个发射,那个接收?

当我们远距离传输时,通常会使用光纤来传输。因为光纤的传输距离很远,一般来说单模光纤的传输距离在10千米以上,而多模光纤的传输距离最高也能达到2千米。而在光纤网络中,我们常常会使用到光纤收发器。那么,在使用光纤收…