zoukankan      html  css  js  c++  java
  • BufferedInputStream 缓冲输入字节流 -------上

     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 }
  • 相关阅读:
    MFC记录
    【转】linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解----不错
    【转】五大绝招复制不能复制的网页文字
    【转】DELL戴尔N4050笔记本拆机(图文)
    【转】Linux下tar.xz结尾的文件的解压方法
    【转】在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持--不错
    【转】Android adb shell操作时出现“ XXX ... Read-only file system”解决办法--不错
    【转】VirtualBox direct access to SD Card in Windows--不错
    网址
    TensorFlow 学习(九)—— 初始化函数(概率分布函数 api、常数生成函数)
  • 原文地址:https://www.cnblogs.com/fujilong/p/4703539.html
Copyright © 2011-2022 走看看