1 package com.BufferedInputStreamUse;
2
3 import java.io.BufferedInputStream;
4 import java.io.File;
5 import java.io.FileInputStream;
6 import java.io.FileNotFoundException;
7 import java.io.IOException;
8
9 /*
10 我们清楚读取文件数据使用缓冲数组读取效率更高,sun也知道使用缓冲数组读取效率更高,那么
11 这时候sun给我们提供了一个------缓冲输入字节流对象,让我们可以更高效率读取文件。
12
13
14 输入字节流体系:
15 ----| InputStream 输入字节流的基类。 抽象
16 ----------| FileInputStream 读取文件数据的输入字节流
17 ----------| BufferedInputStream 缓冲输入字节流 缓冲输入字节流的出现主要是为了提高读取文件数据的效率。
18 其实该类内部只不过是维护了一个8kb的字节数组而已。
19
20 注意: 凡是缓冲流都不具备读写文件的能力。
21
22 使用BufferedInputStream的步骤 :
23 1. 找到目标文件。
24 2. 建立数据 的输入通道
25 3. 建立缓冲 输入字节流流
26 4. 关闭资源
27 */
28 /**
29 * BufferedInputStream 缓冲输入字节流
30 * @author Administrator
31 *
32 */
33
34 //读取文件的时候我们都是使用缓冲数组读取。效率会更加高
35 class Reader{
36 public static void readTest(){
37 //找到目標文件
38 File file = new File("D://aa.txt");
39 //建立数据之间的通信
40 BufferedInputStream bufferedInputStream = null;
41 try {
42 FileInputStream fileInputStream = new FileInputStream(file);
43 bufferedInputStream = new BufferedInputStream(fileInputStream);
44 int length = 0;
45 /* //这种方法无法解释汉子
46 while((length = bufferedInputStream.read())!=-1){
47 System.out.print((char)length);
48 }*/
49 byte[] bs = new byte[1024*8];
50 //疑问二:BufferedInputStream出现 的目的是了提高读取文件的效率,但是BufferedInputStream的read方法每次读取一个字节的数据
51 //而FileInputStreram每次也是读取一个字节的数据,那么BufferedInputStream效率高从何而来?
52 while((length = bufferedInputStream.read(bs))!=-1){
53 String str = new String(bs,0,length);
54 System.out.println(str);
55 }
56 } catch (FileNotFoundException e) {
57 // TODO Auto-generated catch block
58 e.printStackTrace();
59 } catch (IOException e){
60 e.printStackTrace();
61
62 }finally{
63 if(bufferedInputStream != null){
64 try {
65 //调用BufferedInputStream的close方法实际上关闭的是FileinputStream.
66 bufferedInputStream.close();
67 } catch (IOException e) {
68 // TODO Auto-generated catch block
69 e.printStackTrace();
70 }
71 }
72 }
73
74 }
75 }
76
77 public class BufferedInputStreamTest {
78
79 public static void main(String[] args) {
80 // TODO Auto-generated method stub
81
82 Reader reader = new Reader();
83 reader.readTest();
84 }
85
86 }