• 缓冲流(字节缓冲流、字符缓冲流)----Java


    概述

            缓冲流,也叫高效流,是对4个基本的 FiileXxx 流的增强,所以也是4个流,按照数据类型分类:

    字节缓冲流

            构造方法

            public BufferedInputStream(InputStream in):

                    创建一个新的缓冲输入流。

            public BufferedOutputStream(OutputStream out):

                    创建一个新的缓冲输出流。

    注意:创建缓冲流时,需要先有缓冲对象,此处使用匿名对象创建了缓冲区对象 

    构造举例,代码如下:

    1. import java.io.*;
    2. public class Test {
    3. public static void main(String[] args) throws IOException {
    4. // 创建字节缓冲输入流
    5. BufferedInputStream bis =new BufferedInputStream(new FileInputStream("bis.txt"));
    6. // 创建字节缓冲输出流
    7. BufferedOutputStream bos =new BufferedOutputStream(new FileOutputStream("bos.txt"));
    8. }
    9. }

    效率测试

            查询API,缓冲流读写方法与基本的流是一致的,我们通过复制大文件(375MB),测试它的效率。

    1. import java.io.*;
    2. public class Test {
    3. public static void main(String[] args) throws IOException {
    4. // 记录开始时间
    5. long start =System.currentTimeMillis();
    6. // 创建流对象
    7. try(
    8. FileInputStream fis = new FileInputStream("jdk9.exe");
    9. FileOutputStream fos = new FileOutputStream("copy.exe");
    10. ){
    11. // 便写数缩
    12. int b;
    13. while((b =fis.read())!=-1) {
    14. fos.write(b);
    15. }
    16. }catch(IOException e){
    17. e.printStackTrace();
    18. }
    19. // 记录结束时间
    20. long end =System.currentTimeMillis();
    21. System.out.println("普通流复制时间:"+(end-start)+"毫秒");
    22. }
    23. }

     字符缓冲流

            构造方法

            public BufferedReader(Reader in):

                    创建一个新的缓冲输入流。

            public BufferedWriter(Writer out):

                    创建一个新的缓冲输出流。

    构造举例,代码如下:

    1. // 创建字符缓冲输入流
    2. BufferedReader br = new BufferedReader(new FileReader("br.txt"));
    3. // 创建字符缓冲输出流
    4. BufferedWriter bw=new BufferedWriter(new FileWriter("bw.txt"));

             特有方法

                    字符缓冲流的基本方法与普通字符流调用方式一致,不再阐述,我们来看它们具备的特有方法。

                     BufferedReader: public String readLine():

                                    读一行文字。

                    BufferedWriter: public void newLine():

                                    写一行行分隔符(即换行符),由系统属性定义符号。

    readLine 方法演示,代码如下: 

    1. import java.io.*;
    2. public class BufferedReaderDemo {
    3. public static void main(String[] args) throws IOException {
    4. // 创建流对象
    5. BufferedReader br = new BufferedReader(new FileReader("out.txt"));
    6. // 定义字符串,保存读取的一行文字
    7. String line =null;
    8. // 循环读取,读取到最后返回null
    9. while((line= br.readLine())!=null) {
    10. System.out.print(line);
    11. System.out.println("_____-");}
    12. // 释放资源
    13. br.close();
    14. }
    15. }

    writeLine 方法演示,代码如下:  

    1. import java.io.*;
    2. public class BufferedWriterDemo {
    3. public static void main(String[] args) throws IOException {
    4. // 创建流对象
    5. BufferedWriter bw = new BufferedWriter(new FileWriter("out.txt"));
    6. // 写出数据
    7. bw.write("我是");
    8. // 写出换行
    9. bw.newLine();
    10. bw.write("程序");
    11. bw.newLine();
    12. bw.write("员");
    13. bw.newLine();
    14. // 释放资源
    15. bw.close();
    16. }
    17. }
    1. //使用缓冲流读new.txt的内容并输出
    2. BufferedReader fr = new BufferedReader(new FileReader("new.txt"));
    3. BufferedWriter fw = new BufferedWriter(new FileWriter("ccc.txt"));
    4. String line = null;
    5. while ((line = fr.readLine())!=null)
    6. System.out.println(line);

  • 相关阅读:
    Python 列表推导式深入解析
    zookeeper3.8.0集群安装及基础命令
    Java 中“1000==1000”为false,而”100==100“为true?
    rust宏
    【漏洞库】Fastjson_1.2.24_rce
    驱动开发11-2 编写SPI驱动程序-点亮数码管
    手动实现function isInstanceOf(child,Parent)
    SSL证书也会失效?什么情况下SSL证书会失效呢?
    阿里云2024年服务器2核4G配置评测_CPU内存带宽_优惠价格
    springboot报错驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接,解决方式
  • 原文地址:https://blog.csdn.net/m0_56501550/article/details/128164678