缓冲流 Buffer :设置缓冲区加快执行效率
子类:
(一)BufferedInputStream : 缓冲输入字节流 ,目的:提高读取文件的效率
注意: BufferedInputStream 他是没有读写数据的功能
内部实现 : 你面维护了一个8字节的byte数组。
使用步骤:
1.找到一个目标文件.
2.建立通道 new FileInputStream(" ");
3.创建一个缓冲字节输入流 new BufferedInputStream(FileInputStream);
4.读取数据 read();
5.关闭资源 close();
(二)BufferedOutputStream :缓冲输出字节流 内部维护了一个 8k的字节数组
作用: 提高文件的输出的效率,可以提供其他的方法。
使用:
1.找目标
2.建立通道 FileOutputStream
3.创建一个缓冲字节输出流
4.写数据,不会写入到磁盘中。 如果数组中的数据已经满了,才会自动将数据写入到磁盘中。
5.将数据写入到磁盘 : 调用flush(),或者关闭资源。
6.关闭资源。
(三)BuffredRead 缓冲输入字符流。
有一个扩展的功能:readLine(); // 可以一次读一行文字。
(四)BufferedWriter: 缓冲输出字符流
内部提供一个8192长度的字符数组作为这样一个缓冲区。
BufferedWriter作用 :提高写入的效率,拓展FileWriter的功能。
newLine(); //换行写入数据
简单的字节缓冲流案例
1 importjava.io.BufferedInputStream;2 importjava.io.BufferedOutputStream;3 importjava.io.File;4 importjava.io.FileInputStream;5 importjava.io.FileOutputStream;6 importjava.io.IOException;7
8 public classbuffered {9
10 /**
11 *@paramargs12 *@throwsIOException13 */
14 public static void main(String[] args) throwsIOException {15 //TODO Auto-generated method stub16 //bufInTest();
17 bufOutTest();18 }19
20 //(1)BufferedInputStream 的使用
21 public static void bufInTest() throwsIOException{22 //1.找到目标
23 File file = new File("D:\\a.txt");24 //2.创建通道
25 FileInputStream fis = newFileInputStream(file);26
27 //**3.创建一个缓冲输入字节流******
28 BufferedInputStream bfis = newBufferedInputStream(fis);29
30 //4.开始写入数据
31 int content = 0; //一次只会取一个字节
32 while ((content= bfis.read())!= -1) { //还是一个一个的读取 问什么可以提高效率呢?
33 System.out.print((char)content);34 }35 //5.关闭通道
36 bfis.close();37 }38
39 //(2)BufferedOutputStream 的使用
40 public static void bufOutTest() throwsIOException{41
42 //1.找目标
43 File file = new File("D:\\b.txt");44 //2.创建通道
45 FileOutputStream fos = newFileOutputStream(file);46
47 //3.创建缓冲流
48 BufferedOutputStream bfos = newBufferedOutputStream(fos);49
50 //4.创建写入文件的数据
51 String string = "good good study day day up";52
53 //5.写数据, 到这一步只是将数据保存到内存中字节数组中。
54 bfos.write(string.getBytes());55
56 //6.再刷新 将数据写入到磁盘中57 //bfos.flush();58
59 //7.关闭资源
60 bfos.close();//内部会实现flush();
61 }62 }
简单的字符缓冲流案例
1 importjava.io.BufferedReader;2 importjava.io.BufferedWriter;3 importjava.io.File;4 importjava.io.FileReader;5 importjava.io.FileWriter;6 importjava.io.IOException;7
8 public classfileReader {9
10 public static void main(String[] args) throwsIOException {11 testBufferedWriter();12 testBufferedRead();13 }14 //(1)缓冲输出字符流的使用
15 public static void testBufferedWriter() throwsIOException{16
17 //1.建立一个通道,指定一个路径
18 FileWriter fiw = new FileWriter("D:\\a.txt",true);19
20 //2.创建缓冲流
21 BufferedWriter bfw = newBufferedWriter(fiw);22
23 //让数据换行显示
24 bfw.newLine(); //换行写入数据25
26 //3.开始写入数据
27 bfw.write("上课不要吃东西");28
29 //4.关闭资源
30 bfw.close(); //关闭资源之前会做一个刷新操作。调用flush()方法。
31 }32
33 //(2)缓冲输入字符流的使用
34 public static void testBufferedRead() throwsIOException{35
36 //1.创建通道并且指定路径
37 FileReader fir = new FileReader("D:\\b.txt");38
39 //2.创建缓冲流
40 BufferedReader bfr = newBufferedReader(fir);41
42 //3.1、开始读取数据(一次读取一个字节)
43 int content = 0;44 while ((content = bfr.read()) != -1) {45
46 System.out.print((char)content);47 }48
49 //3.2、readLine()扩展功能,读取一行数据
50 String string1 =bfr.readLine();51 System.out.println(string1);52
53 //一次读取一行数据(返回字符串),效率更高
54 String string = null;55 while ((string = bfr.readLine()) != null) {56 System.out.println(string);57 }58
59 //4.关闭
60 bfr.close();61 }62 }