码迷,mamicode.com
首页 > 其他好文 > 详细

BufferedInputStream 缓冲输入字节流 -------上

时间:2015-08-05 00:56:48      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

 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 }

 

BufferedInputStream 缓冲输入字节流 -------上

标签:

原文地址:http://www.cnblogs.com/fujilong/p/4703539.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!