一、输入字符流
1.1、输入字符流体系
------| Reader:输入字符流的基类(抽象类)
----------| FileReader:向指定文件读取数据的输入字符流(把硬盘上的数据读取到程序中)
----------| BufferedReader:缓冲输入字符流。 缓冲输入字符流出现的目的:是为了提高效率和拓展功能,其实内部维护了一个8192长度的字符数组
注意:所有缓冲流都不具备读写文件的能力(比如BufferedReader,他要借助FileReader的读功能来读文件)
1.2、字节流和字符流的区别
1、字节流:字节流是读取文件中的二进制数据,读到的数据并不会自动转换成你看得懂的字符,要通过调用getBytes()转换成字符数据,并且用数组接收。比如:byte[] buf=s.getBytes()
2、字符流:字符流会把读取到的二进制的数据自动进行对应的编码与解码工作。字符流=字节流+编码(解码)
1.3、FileReader的步骤
1、找到目标文件
2、建立数据输入通道
3、读取数据(把硬盘上的数据读取到程序中)
4、关闭资源
1.4、实例
1 package com.dhb.file;2
3 import java.io.File;4 import java.io.FileReader;5 import java.io.IOException;6
7 /**8 * @author DSHORE / 2018-7-69 *10 */
11 public classDemo14{12 public static voidmain(String[] args) throws IOException {13 readTest();14 }15 //输入字符流
16 public static voidreadTest() throws IOException{17 //找到目标文件
18 File file=new File("C:\\MyEclipse10\\MyCode\\MyJavaCode\\src\\com\\dhb\\file\\Demo13.java");19 //建立数据输入通道
20 FileReader fr=newFileReader(file);21 //读取数据
22 int length=0;23 while((length=fr.read())!=-1){//读数据
24 System.out.print((char)length);25 }26 //关闭资源
27 fr.close();28 }29 }
运行结果图
二、缓冲输入字符流
2.1、BufferedReader注意事项
1.缓冲输入字符流出现的目的:是为了提高效率和拓展功能,其实内部维护了一个字符数组
2.凡是缓冲流都不具备读写文件的能力
2.2、实例
1 package com.dhb.file;2
3 import java.io.BufferedReader;4 import java.io.File;5 import java.io.FileReader;6 import java.io.IOException;7
8 /**9 * @author DSHORE / 2018-7-1110 *11 */
12 public classDemo16 {13 public static voidmain(String[] args) throws IOException {14 readTest1();15 }16
17 public static voidreadTest1() throws IOException{18 //找到目标文件
19 File file=new File("F:\\a.txt");20 //建立数据输入通道
21 FileReader fr=newFileReader(file);22 BufferedReader br=newBufferedReader(fr);23 /*//方式1:读取数据24 int length=0;25 while((length=br.read())!=-1){//一次读一个字符26 System.out.print((char)length);27 }28 br.close();*/
29 //方式2:读取数据
30 String line=null;31 while((line=br.readLine())!=null){//一次读一行
32 System.out.println(line);33 }34 }35 }