• 九、缓冲流


    一、初步认识

          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 }
  • 相关阅读:
    041.PGSQL-pgsql常用命令-查看日志文件大小、数据目录、运行日志相关配置、当前lsn
    041.PGSQL-pgsql时间日期错误问题,原来是系统时间问题,使用远程的NTP时间服务器来提供时间的话,需要使用timedatectl设置将NTP时间同步开启。
    040.PGSQL-备份和恢复-增量备份-创建基础备份
    039.PGSQL-备份和恢复-增量备份-开启wal归档、并设置定时清理备份之后的wal文件
    037.PGSQL-事务 savepoint 保存点、rollback to 回滚
    硬件黑客之无线电安全 --- Proxmark3 RDV4 套件
    我有一个想法。。。
    硬件嘿客之嘿客仓库
    WPA GPU基准测试
    什么是家用路由器,带你重新认识一下
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12601241.html
Copyright © 2020-2023  润新知