哈喽,各位小伙伴们好,我是喵手。
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流学习,互相学习,才能成长的更快,对吧。
我是一名java开发,所以日常接触到最多的就是java啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。
小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!
前言
在Java中,我们经常需要读取文件中的内容,然而文件内容往往包含着各种各样的字符,如何高效地读取这些字符是我们在开发中遇到的一个问题。在此,我们将介绍Java中的Reader
类,它可以帮助我们解析字符流,轻松地读取文件内容。
摘要
本文将介绍Java中的Reader
类,包括:
Reader
类的概述和常用方法介绍- 如何使用
Reader
类读取文本文件 - 如何使用
BufferedReader
类提高读取效率 - 如何使用
InputStreamReader
类解决文件编码问题
正文
Reader
类的概述和常用方法介绍
在Java中,Reader
类用于读取字符流。它是所有字符输入流的父类,可以读取字符数组、字符串等。
常用的Reader
方法如下:
read()
:读取单个字符,并返回它的Unicode值。如果到达流的末尾,返回-1。read(char[] cbuf)
:将字符读入数组。返回读入的字符数,如果到达流的末尾,返回-1。read(char[] cbuf, int offset, int length)
:将字符读入数组的某一部分。offset表示数组开始存储的下标,length表示希望读取的字符数。skip(long n)
:跳过n个字符。close()
:关闭流。
如何使用Reader
类读取文本文件
下面是一个使用Reader
类读取文本文件的简单示例:
package com.example.javase.io;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.io.FileReader;
import java.io.IOException;
/**
* @date 2023/9/12 15:09
*/
@SpringBootTest
public class ReaderTest {
@Test
public void testFileReader() {
try {
FileReader reader = new FileReader("./template/hello.txt");
int data = reader.read();
while (data != -1) {
System.out.print((char) data);
data = reader.read();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在示例中,我们首先创建了一个FileReader
对象,然后调用read()
方法逐个读取文件中的字符,并将其转换成char
类型输出到控制台。最后,我们调用close()
方法关闭流。
执行结果演示:
附上hello.txt
文本截图:
如何使用BufferedReader
类提高读取效率
在读取大文件时,逐个字符读取的效率较低。因此,我们可以使用BufferedReader
类提高读取效率。BufferedReader
类可以一次读取多个字符,并将它们存储在缓冲区中。这样,当我们需要读取下一个字符时,我们可以直接从缓冲区中获取,而不需要每次都去读取文件。
下面是一个使用BufferedReader
类读取文本文件的示例:
@Test
public void testBufferedReader() {
try {
FileReader reader = new FileReader("./template/hello.txt");
BufferedReader br = new BufferedReader(reader);
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
br.close();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
在示例中,我们首先创建了一个FileReader
对象,然后再创建了一个BufferedReader
对象。我们使用readLine()
方法逐行读取文件内容,并将其输出到控制台。最后,我们调用close()
方法关闭流。
测试执行截图如下:
如何使用InputStreamReader
类解决文件编码问题
在读取文件时,有时候我们会遇到文件编码问题。例如,当我们想要读取UTF-8编码的文件时,如果使用FileReader
类,可能会出现乱码现象。这时,我们可以使用InputStreamReader
类来解决这个问题。
下面是一个使用InputStreamReader
类读取UTF-8编码的文件的示例:
@Test
public void testInputStreamReader() {
try {
InputStream is = new FileInputStream("./template/hello.txt");
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
br.close();
isr.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
在示例中,我们首先创建了一个FileInputStream
对象,并用它创建了一个InputStreamReader
对象。在创建InputStreamReader
对象时,我们指定了文件的编码方式为UTF-8。然后,我们再创建了一个BufferedReader
对象,用于逐行读取文件内容。最后,我们调用close()
方法关闭流。
执行截图如下:
测试用例
我们可以创建一个hello.txt
文件,将以下内容写入其中:
hello,my friends!
然后,运行上述示例代码,我们将能够在控制台上看到文件中的内容。
全文小结
在本文中,我们介绍了Java中的Reader
类。我们首先介绍了Reader
类的概述和常用方法,然后讲解了如何使用Reader
类读取文本文件以及如何使用BufferedReader
类提高读取效率。最后,我们还介绍了如何使用InputStreamReader
类解决文件编码问题。通过本文的介绍,相信读取文件内容再也不是难事了!# Java之Reader:解析字符流,读取文件内容不再是难事!
... ...
最后
好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。
... ...
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。