jdk中读取文件是一个典型的装饰者模式:装饰类给被装饰类添加新的行为
package com.jd.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
File file = new File("D:\\文件\\测试.txt");
try{
FileInputStream fin = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(fin,"gbk");
BufferedReader buff = new BufferedReader(reader);
String a;
while((a =buff.readLine())!=null ){
System.out.println(a);
}
// byte[] txt = new byte[fin.available()];
// fin.read(txt);
// System.out.println(new String(txt));
fin.close();
reader.close();
buff.close();
}catch (Exception e){
}
}
}
过程梳理:
- 实例化 file 就是说文件类型对应的结构信息 话句话说就是装载文件的属性
- 实例化 FileInputStream 用FileInputStream去装饰File 目的是获取文件的内容
file就是说记录txt文件的创建时间.作者,多大之类的信息;FileInputStream就是用来读txt文件内容的
- 实例化InputStreamReader 这个叫做转换流 把字节转换为字符 字符编码是gbk
- 实例化BufferReader 也叫行读取器 实际上是一个缓冲器 用它可以一次读文本的一行数据
- buff.readLine() 每次读一行 返回值是字符串
- 关闭各种流