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 }
时间: 2024-10-02 10:00:50