目标:文件字符输入流
IO流的体系:
字节流 字符流
字节输入流 字节输出流 字符输入流 字符输出流
InputStream OutputStream Reader Writer (抽象类)
FileInputStream FileOutputStream FileReader FileWriter (实现类)
文件字符输入流:FileReader
– 作用:以内存为基准,把磁盘文件的数据按照一个一个的字符读入到内存中去。
– 构造器:
public FileReader(File file)
public FileReader(String filePath)
– 方法:
public int read(): 读取一个字符的编号返回,读取完毕返回-1
public int read(char[] buffer):读取字符数据装入到字符数组中去,返回装了多少个字符数,读取完毕返回-1
使用字符流一个一个字符的读取文本内容
可以使用字符流实现一个一个字符的读取文本内容。性能差!
public class FileReaderDemo01 {
public static void main(String[] args) throws Exception {
// 1.创建一个文件字符输入流管道与源文件接通
Reader fr = new FileReader("src/dlei08.txt");
// 2.读取字符:读取一个字符编号返回!
/* char ch = (char) fr.read();
System.out.println(ch);
char ch1 = (char) fr.read();
System.out.println(ch1);*/
// 拓展:一个一个字符循环的读取
// 定义一个变量存储一个字符
int ch ;
while((ch = fr.read())!=-1){
System.out.print((char)ch);
}
}
}
使用字符流按照字符数组循环的读取文本内容
字符输入流按照字符数组循环读取文本文件内容输出:很合适。
public class FileReaderDemo02 {
public static void main(String[] args) throws Exception {
// 1.创建一个文件字符输入流管道与源文件接通
Reader fr = new FileReader("src/dlei08.txt");
// 2.定义一个字符数组读取数据。
/*char[] buffer = new char[32];
int len = fr.read(buffer);
System.out.println("读取了多少个字符:"+len);
String rs = new String(buffer,0,len);
System.out.println(rs);*/
// 定义一个循环读取数据输出: 1024 +1024 + 3
char[] buffer = new char[1024];
int len; // 记录每次读取了多少个字符。
while((len = fr.read(buffer)) != -1 ){
String rs = new String(buffer,0,len);
System.out.print(rs);
}
}
}