Java – IO流 – Stream转换流

简介

转换流是指,采用字节流的方式对文本文件进行读取。

我们知道,文本是有字符集的,使用 FileReader 的时候,是没有指定使用那个字符集去读取的,只是我们约定俗成的把文件保存为 UTF-8 编码,而 FileReader 读文本文件的时候也默认使用 UTF-8 进行解码。

但是如果我们遇到的是一个是 GBK 字符集的编码的文本文件时,如果依然使用默认的 UTF-8 解码,会出现乱码。

 

InputStreamReader 输入转换流(已淘汰)

InputStreamReader 可以提供自定义字符集来读取文本文件,通俗的讲就是,先把文件当作是一个字节流文件(未知字符集文件),然后自定义指定字符集对文件进行解码。

 

创建InputStreamReader

// 指定使用 GBK 字符集的方式进行解码文件
InputStreamReader isr = new InputStreamReader(new FileInputStream("path"),"GBK");

 

读取数据

InputStreamReader 在读取数据时,会根据自定义的字符集规则对文件中的数据进行解码,所读取的一个字,并非是一个字节,而是字符集中指定一个字符所表达的字节数量

// 读出一个字符,非读出一个字节
isr.read()

 

OutputStreamWriter 输出转换流(已淘汰)

OutputStreamWriter 会对内存中将要写出的文本数据,以自定义字符集规则对文件进行写出。如果指定字符集为 GBK,那么内存中的文字数据在写出文件时,将转为 GBK 编码的字节文件。

 

创建OutputStreamWriter

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("path"),"UTF8");

 

写出数据

osw.write();

 

新的输入输出转换流(JDK11)

请参照 FileReader 和 FileWriter 文章

简介 操作本地文件的字符输入流,可以把本地文件中的文本数据读取到程序中来。   创建输入流 ……
2022-12-16
简介 FileWriter 是 IO流体系中的字符输出OutputStream的子类,负责 字符流的输出操作,可以把程序中的……
2022-12-16

 

示例:自定义字符集一次读一行

我们知道,

1.FileInputStream() 用于读取文件字节流数据

2.FileReader() 用于读取文本文件中的数据,可以设定指定字符集,但不能直接读取一行

3.InputStreamReader() 能指定字符集

4.BufferedReader() 能一次读取一行

 

需求:读取一个GBK文本文件,要求一次读一行,使用两种办法进行解决

 

办法一:使用 FileReader 在JDK11之后提供的自定义字符集构造方法配合BufferedReader进行读行

// 指定一个 GBK 字符集来解码的 FileReader 对象
FileReader fr = new FileReader(new File("path"), Charset.forName("GBK"));
// 使用缓冲流一次读一行
BufferedReader br = new BufferedReader(fr);
br.readLine();

 

办法二:使用 InputStreamReader() 自定义字符集进行解码文件,再配合 BufferedReader() 一次读一行

// 因为 InputStreamReader 是把文本文件当作字节流使用,所以需要创建一个字节流对象
FileInputStream fis = new FileInputStream(new File("path"));
// 把字节流中的文件以 GBK 字符集的方式解码
InputStreamReader isr = new InputStreamReader(fis, Charset.forName("GBK"));
// 再配合 缓冲流一次读取一行
BufferedReader br = new BufferedReader(isr);
br.readLine();

 

释放转换流

涉及文件输出的流操作,都应该关闭流文件操作

close();

 

如果您喜欢本站,点击这儿不花一分钱捐赠本站

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看

修改版本安卓软件,加群提示为修改者自留,非本站信息,注意鉴别

THE END
分享
二维码
打赏
海报
Java – IO流 – Stream转换流
简介 转换流是指,采用字节流的方式对文本文件进行读取。 我们知道,文本是有字符集的,使用 FileReader 的时候,是没有指定使用那个字符集去读取的,只是我们约定俗成的把文件保存为 UTF-8 ……
<<上一篇
下一篇>>