zoukankan      html  css  js  c++  java
  • 九、缓冲流

    一、初步认识

          Java缓冲流本身并不具有IO流的读取与写入功能,只是在别的流(节点流或其他处理流)上加上缓冲功能提高效率,就像是把别的流包装起来一样,因此缓冲流是一种处理流(包装流)。

          当对文件或者其他数据源进行频繁的读写操作时,效率比较低,这时如果使用缓冲流就能够更高效的读写信息。因为缓冲流是先将数据缓存起来,然后当缓存区存满后或者手动刷新时再一次性的读取到程序或写入目的地。

          因此,缓冲流还是很重要的,我们在IO操作时记得加上缓冲流来提升性能。

    二、缓冲流涉及到的类

    • BufferedInputStream
    • BufferedOutputStream
    • BufferedReader
    • BufferedWriter

    三、注意

    • 当写入数据时,首先写入缓冲区,当缓冲区满时,其中的数据写入所连接的输出流。使用方法 flush()可以强制将缓冲区的内容全部写入输出流
    • 关闭流的顺序和打开流的顺序相反.只要关闭高层流即可,关闭高层流其实关闭的底层节点流
    • flush()的使用:手动将 buffer 中内容写入文件
    • 缓存区的大小默认是8192字节,也可以使用其它的构造方法自己指定大小。
    • readLine()方法是BufferedReader特有的方法,可以对文本文件进行更加方便的读取操作。
    • 写入一行后要记得使用newLine()方法换行。
     1 import java.io.BufferedWriter;
     2 import java.io.File;
     3 import java.io.FileNotFoundException;
     4 import java.io.FileWriter;
     5 import java.io.IOException;
     6 
     7 /**
     8  * 文件字符输出流 加入缓冲流
     9  *1、创建源
    10  *2、选择流
    11  *3、操作(写出内容)
    12  *4、释放资源
    13  *  14  *
    15  */
    16 public class BufferedTest04 {
    17 
    18     public static void main(String[] args) {
    19         //1、创建源
    20         File dest = new File("dest.txt");
    21         //2、选择流
    22         BufferedWriter writer =null;
    23         try {
    24             writer = new BufferedWriter(new FileWriter(dest));
    25             //3、操作(写出)            
    26             writer.append("IO is so easy");
    27             writer.newLine();     //换行
    28             writer.append("你好");
    29             writer.flush();   //手动将buffer中内容写入文件,因为缓存未满,不会写入所连接的输出流
    30         }catch(FileNotFoundException e) {        
    31             e.printStackTrace();
    32         }catch (IOException e) {
    33             e.printStackTrace();
    34         }finally{
    35             //4、释放资源
    36             try {
    37                 if (null != writer) {
    38                     writer.close();
    39                 } 
    40             } catch (Exception e) {
    41             }
    42         }
    43     }
    44 
    45 }
     1 import java.io.BufferedReader;
     2 import java.io.File;
     3 import java.io.FileNotFoundException;
     4 import java.io.FileReader;
     5 import java.io.IOException;
     6 
     7 /**
     8  * 四个步骤: 分段读取 文件字符输入流  加入缓冲流
     9  * 1、创建源
    10  * 2、选择流
    11  * 3、操作
    12  * 4、释放资源
    13  * 
    14  * 15  *
    16  */
    17 public class BufferedTest03 {
    18 
    19     public static void main(String[] args) {
    20         //1、创建源
    21         File src = new File("abc.txt");
    22         //2、选择流
    23         BufferedReader  reader =null;
    24         try {
    25             reader =new BufferedReader(new FileReader(src));
    26             //3、操作 (分段读取)
    27             String line =null;             //不是-1了,当读不到时是null
    28             while((line=reader.readLine())!=null) {       //readLine()读一行文字
    29                 //字符数组-->字符串
    30                 System.out.println(line);
    31             }        
    32         
    33         } catch (FileNotFoundException e) {
    34             e.printStackTrace();
    35         } catch (IOException e) {
    36             e.printStackTrace();
    37         }finally {
    38             //4、释放资源
    39             try {
    40                 if(null!=reader) {
    41                     reader.close();
    42                 }
    43             } catch (IOException e) {
    44                 e.printStackTrace();
    45             }
    46         }
    47     }
    48 
    49 }
  • 相关阅读:
    深入Android 【一】 —— 序及开篇
    Android中ContentProvider和ContentResolver使用入门
    深入Android 【六】 —— 界面构造
    The service cannot be activated because it does not support ASP.NET compatibility. ASP.NET compatibility is enabled for this application. Turn off ASP.NET compatibility mode in the web.config or add the AspNetCompatibilityRequirements attribute to the ser
    Dynamic Business代码片段总结
    对文件的BuildAction以content,resource两种方式的读取
    paraview 3.12.0 windows下编译成功 小记
    百度网盘PanDownload使用Aria2满速下载
    netdata的安装与使用
    用PS给证件照排版教程
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12601241.html
Copyright © 2011-2022 走看看