• IO Streams:缓冲流


    我们迄今为止看到的大多数示例都使用无缓冲的I / O。这意味着每个读或写请求都由底层操作系统直接处理。这使程序效率变得很低,因为每个这样的请求经常触发磁盘访问,网络活动或一些相对昂贵的其他操作。 

    为了减少这种开销,Java平台实现了缓冲的I / O流。缓冲输入流从称为缓冲区的存储区读取数据;仅当缓冲区为空时才调用本地输入API。类似地,缓冲输出流将数据写入缓冲区,仅当缓冲区已满时才调用本地输出API。 程序可以使用我们已经使用过多次的包装习惯将无缓冲流转换为缓冲流,其中将无缓冲流对象传递给缓冲流类的构造函数。以下是如何使用缓冲I / O的构造函数修改CopyCharacters的示例:

    inputStream = new BufferedReader(new FileReader("xanadu.txt"));
    outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));

    有四个缓冲流类用于包装无缓冲流:BufferedInputStream和BufferedOutputStream创建缓冲字节流,而BufferedReader和BufferedWriter创建缓冲字符流。


    在关键点写出缓冲区通常是有意义的,而无需等待填充,这被称为冲洗缓冲区。

     一些缓冲输出类支持自动刷新,由可选的构造函数参数指定。启用自动清洗时,某些关键事件会导致缓冲区被刷新。例如,一个自动刷新的PrintWriter对象在每次调用println或格式时刷新缓冲区。有关这些方法的更多信息,请参阅格式。 要手动刷新流,请调用其flush方法。 flush方法对任何输出流都有效,但是除非流被缓冲,否则不起作用。

  • 相关阅读:
    0xx_nodeJS
    0xx_jQuery
    0xx_正则表达式
    0xx_ES6
    centos重启关机命令
    tomcat服务开机启动脚本
    mysql授权总结
    centos创建文件命令
    svn如果无法连接有可能导致右键卡
    简单导出excel
  • 原文地址:https://www.cnblogs.com/hhx626/p/8320412.html
Copyright © 2020-2023  润新知