(IAVA)-IO流-编解码,字符输入输出流

文章讲述了在Windows系统中,如何使用GBK和UTF-8字符集对包含英文和中文的文本文件进行编码和解码,以及为何在处理纯文本时推荐使用字符流(如FileReader和FileWriter),强调了字符流与字节流的区别和使用场景。
摘要由CSDN通过智能技术生成

为了计算机能对不同文字进行存储,将会使用字符集表对文字进行编码。当前简体中文windows系统默认使用GBK字符集,用的utf-8编码规则。

编解码方法

编码使用的是字符串类的成员方法,解码是构造方法

我有一个文本文档,里面写了英文和中文。

我尝试用字节流去读取然后解析他

   FileInputStream fis=new FileInputStream("D:\\aaa\\ddd.txt");
byte[]bytes=new byte[5];
int len;
while ((len=fis.read(bytes))!=-1) {
String str=new String(bytes);
System.out.println(str);

得到的却含有乱码,这是因为一次只能读取一个数组大小的数据,因此无法将整个数据完整读取到

因此,字符流便起作用了

字符输入流

字符流本质就是字节流加上了指定的编码规则

输入流:一次读多个字节,遇到中文时,一次读多个字节

输出流:底层会把数据按照指定编码方式进行编码,变成字节再写到文件中

因为字符流是按照指定规定进行读取写入,因此不能进行操作.jpg;.mp3;.mp4;.avi;.doc;.ppt等二进制文件,这些只能通过字节流来处理。所以对于纯文本的文件,强烈推荐使用字符输入输出流。

FileReader S

创建对象

读取的文件不存在直接报错

读取数据

1.按字节进行读取,遇到中文一次读取多个字节,读取后解码,返回一个整数

读到文件末尾了返回-1,有参的字符数组把读取,解码,强转合并了,把强转之后的字符放到数组中

2.读取后,会解码并转成十进制

关流:close

FIleWriter

构造方法:

成员方法:

关流:close方法

注意:如果不调用close方法关闭资源,数据只是保存到了缓冲区中,字符流在操作时首先会去将文件的内容读取到大小为8192缓冲区中,接着从缓冲区中读取内容,这样读取速度会快很多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值