Javase 基础加强 —— 09 IO流第二弹
本系列为笔者学习Javase的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员Java+AI智能辅助编程全套视频教程,java零基础入门到大牛一套通关》,章节分布参考视频教程,为同样学习Javase系列课程的同学们提供参考。
01 缓冲字节流
BufferedInputstream
缓冲字节输入流可以提高字节输入流读取数据的性能。
InputStream fis = new FileInputStream(srcPath);
InputStream bis = new BufferedInputStream(fis); //我勒个偷天换日
02 缓冲字符流
① BufferedReader
缓冲字符输入流自带8K(8192)
的字符缓冲池,可以提高字符输入流读取字符数据的性能。
Reader fr = new FileReader("day03-file-io\\src\\dlei08.txt");
Reader br = new BufferedReader(fr);//一行一行读
System.out.println(br.readline());//循环版 一行一行读
String line;
while((line = br.readline()) != null){System.out.println(line);
}
注:优雅,实在是太优雅了!
② BufferedWriter
缓冲字符输出流自带8K
的字符缓冲池,可以提高字符输出流写字符数据的性能。
Writer fw = new FileWriter("day03-file-io/src/dlei07-out.txt", true);
BufferedWriter bw = new BufferedWriter(fw);bw.newLine(); //换行
注:Shift + F6
召唤全文筛选 + 替换。
03 案例:复制文言文
需求: 将文言文《出师表》的文章顺序进行恢复到一个新文件中。
分析:
package FileDemo;import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class Test {public static void main(String[] args) {//目标:复制文言文//1.创建缓冲字符输入流管道try (BufferedReader br = new BufferedReader(new FileReader("0416-oop\\src\\FileDemo\\chushibiao.txt"));BufferedWriter bw = new BufferedWriter(new FileWriter("0416-oop\\src\\FileDemo\\chushibiao2.txt"));) {//2.创建List集合,按行读取数据并排序List<String> data = new ArrayList<>();String line;while((line = br.readLine()) != null){data.add(line);}Collections.sort(data);System.out.println(data);//3.遍历List集合,按行输出数据for(String s : data){bw.write(s);bw.newLine(); //换行}System.out.println("执行完毕!");}catch (Exception e){e.printStackTrace();}}
}
04 字符输入转换流
InputStreamReader
(字符输入转换流) 解决不同编码时,字符流读取文本内容乱码的问题。
先获取文件的原始字节流,再将其按真实的字符集编码转成字符输入流,这样字符输入流中的字符就不乱码了。
05 IO 框架
什么是框架?
框架(Framework)
是一个预先写好的代码库或一组工具,旨在简化和加速开发过程,一般是把类、接口等编译成class
形式,再压缩成一个jar
结尾的文件发行出去。
什么是IO
框架?
IO
框架封装了Java
提供的对文件、数据进行操作的代码,对外提供了更简单的方式来对文件进行操作,对数据进行读写等。
导入步骤:
- 在项目中创建一个文件夹:
lib
- 将
commons-io-2.6.jar
文件复制到lib
文件夹 - 在
jar
文件上点右键,选择Add as Library ->
点击OK
- 在类中导包使用
Commons-io
框架
Commons-io
是apache
开源基金组织提供的一组有关IO
操作的小框架,目的是提高IO
流的开发效率。