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 }
  • 相关阅读:
    jenkins 简单实现php集成上线部署
    关于PHP7
    关于版本迭代的那些事
    confirmit中手机端不能直接给input设置disabled属性
    confirmit中Html Styles有一处bug(或者说是一个坑)
    vsCode快捷键大全
    vscode打不开文件夹或文件夹未响应
    js中排序方法sort() 和 reverse()
    js最简单的编写地点
    js对象转换为json格式时,js对象属性中有值为null和undefined注意事项
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12601241.html
Copyright © 2011-2022 走看看