通过BufferedReader类和BufferedWriter类操作txt文件
- 1、BufferedReader类和BufferedWriter类
- 1.1 BufferedReader类
- 1.1.1 构造方法
- 1.1.2 重要方法
- 1.1.3 作用
- 1.2 BufferedWriter类
- 1.2.1 构造方法
- 1.2.2 重要方法
- 1.2.3 作用
- 1.3 总结
- 2、案例
- 2.1 实现代码
- 2.2 输出
1、BufferedReader类和BufferedWriter类
BufferedReader类和BufferedWriter类是Java中用于处理字符流的两个重要类,它们分别用于高效地从字符输入流中读取数据和将数据写入字符输出流。
1.1 BufferedReader类
BufferedReader是一个缓冲字符输入流,它继承自Reader类,提供了字符输入流的缓冲功能,使得读取文本文件更加简便和高效。
1.1.1 构造方法
BufferedReader(Reader in): 创建一个默认大小的输入缓冲区,并使用指定的Reader对象进行初始化。
1.1.2 重要方法
方法名 | 返回值类型 | 备注 |
---|---|---|
read() | int | 读取单个字符并返回其Unicode值。如果已到达流的末尾,则返回-1。 |
read(char[] cbuf, int off, int len) | int | 读取字符到指定的字符数组中,并返回实际读取的字符数。off参数表示起始位置,len参数表示最大读取字符数。 |
readLine() | String | 读取一行文本并返回一个字符串。如果已到达流的末尾,则返回null。 |
close() | void | 关闭输入流并释放与之关联的所有系统资源。 |
1.1.3 作用
降低了输入流访问数据源的次数,通过一次性读取一定大小的数据到缓存区并进行字符编码,从而提高IO的效率。
1.2 BufferedWriter类
BufferedWriter是Java中用于字符输出的缓冲区类,它继承自Writer类,通过缓冲区来提高文件写入效率。
1.2.1 构造方法
通常使用带有Writer对象的构造方法来创建BufferedWriter对象。
1.2.2 重要方法
方法名 | 返回值类型 | 备注 |
---|---|---|
write(char[] cbuf, int off, int len) | void | 将字符数组的一部分写入缓冲区。 |
write(String str, int off, int len) | void | 将字符串的一部分写入缓冲区。 |
write(int c) | void | 写入单个字符。 |
newLine() | void | 写入一个换行符。 |
flush() | void | 将缓冲区中的数据输出到字符输出流中,并清空缓冲区。 |
close() | void | 关闭输出流并释放与之关联的所有系统资源。 |
1.2.3 作用
通过减少直接写入输出流的次数,从而减少了IO操作的次数,提高了程序的运行效率。
1.3 总结
- BufferedReader和BufferedWriter都是Java中用于提高字符流处理效率的类。
- BufferedReader主要用于从字符输入流中读取数据,并提供缓冲功能以提高效率。
- BufferedWriter主要用于将数据写入字符输出流,同样通过缓冲功能来提高效率。
两者都提供了缓冲机制,减少了直接对数据源或目标进行IO操作的次数,从而提高了程序的性能。
2、案例
2.1 实现代码
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class createTXT {
//生成文件名
public static String CreateFileName(String filePath){
String fileName;
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
fileName = filePath + sdf.format(date) +" temp.txt";
return fileName;
}
//新建txt文件并写入指定内容
public static void CreateTxtAndWrite(String filename){
String[] content = {"苍茫的天涯是我的爱","绵绵的青山脚下花正开","什么样的节奏是最呀最摇摆","什么样的歌声才是最开怀"};
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))){
for (String s:content) {
writer.write(s);
writer.write('\n');
writer.flush();
}
}catch (IOException e){
e.printStackTrace();
}
}
//读取txt文件内容
public static void TXTReader(String fileName){
System.out.println("文件名:" + fileName );
try(BufferedReader reader = new BufferedReader(new FileReader(fileName))){
String contentLine;
while((contentLine = reader.readLine())!= null){
System.out.println(contentLine);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args){
String filePath = "D:\\OA_Temp\\attachments\\txt_attachs\\";
String fileName = CreateFileName(filePath);
CreateTxtAndWrite(fileName);
TXTReader(fileName);
}
}