首页 > 编程语言 >分析JAVA打印流的自动刷新

分析JAVA打印流的自动刷新

时间:2024-05-26 21:55:13浏览次数:24  
标签:OutputStream JAVA 打印 autoFlush flush println 刷新

参考:https://blog.csdn.net/xshsjl/article/details/77076235
参考:https://blog.csdn.net/weixin_43369921/article/details/111397253

今天遇到了一个奇怪的事情,使用打印流,有一个自动刷新的参数,但设不设置结果貌似没啥影响,下面来研究研究

public PrintStream(OutputStream out, boolean autoFlush)
public PrintWriter(OutputStream out/Writer, boolean autoFlush)

首先并不是所有的流都需要刷新,只有使用缓冲池的流才会需要刷新,如缓冲流。
flush方法有三种情况。

  1. OutputStream中的flush是一个空的方法。
  2. 有一些实现类中,没有重写flush方法,直接是继承父类的flush方法。
  3. flush方法被重写,如BufferedOutputStream缓冲输出流

所以打印流中参数设置的流符合上述三种情况并切实使用缓冲池,才会涉及到刷新,当然OutputStream可有可无,其flush方法是象征性的,内容为空,以及有一些流的flush方法使用的是OutputStream的flush方法,也可有可无,但最好有,如DataOutputStream


同时,打印流实现自动刷新也是有条件的

  • 查看PrintStream构造器源码
autoFlush – Whether the output buffer will be flushed whenever a byte array is written, one of the println methods is invoked, or a newline character or byte ('\n') is written

autoFlush设置为true,只有在使用println或换行符\n才自动刷新

  • 查看PrintWrite构造器源码
autoFlush – A boolean; if true, the println, printf, or format methods will flush the output buffer

autoFlush设置为true,只有使用println,printf,format才会执行自动刷新

标签:OutputStream,JAVA,打印,autoFlush,flush,println,刷新
From: https://www.cnblogs.com/ashuai123/p/18214353

相关文章

  • 20240521考试(1.打印数字字符 2.打印面积(类的继承)3.简单的矩阵加减)
    目录1.打印数字字符2.打印面积(类的继承)3.简单的矩阵加减1.打印数字字符#include<iostream>#include<iomanip>usingnamespacestd;classdatatype{public:datatype(){}datatype(charc):c(c),i(0),f(0){}datatype(inti):c(0),i......
  • (读后分享)移动Web前端高效开发实战:HTML 5 + CSS 3 + JavaScript + Webpack + React Nat
    链接:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqsoHTML5新特性与应用:介绍HTML5的新特性,包括语义化标签、本地存储、设备兼容、连接特性等,并讲解如何在移动Web前端开发中充分利用这些特性提升用户体验。CSS3样式与动画设计:详细讲解CSS3的样式设计和动画效果,包......
  • 【Java笔记】第8章:面向对象的三大特性(封装、继承、多态)
    前言1.三大特性概述2.封装3.继承4.多态结语#include<GUIQU.h>intmain{上期回顾:【Java笔记】第7章:面向对象个人主页:C_GUIQU归属专栏:【Java学习】return一键三连;}前言各位小伙伴大家好!上期小编给大家讲解了Java中的面向对象,接下来讲讲Java中面向......
  • idea启动报错:java.lang.NoClassDefFoundError: org/mybatis/logging/LoggerFactory
    文章目录一、问题二、解决方法一、问题问题描述:idea整合Mybatis-plus的时候,启动报错:java.lang.NoClassDefFoundError:org/mybatis/logging/LoggerFactory二、解决方法可能原因:仔细检查了一下,发现mybatis-spring-boot-starter的包和mybatis-plus-boot-starter的......
  • JDBC & 数据库连接池:详述Java 数据库操作的基础,数据库连接池的使用以及原理,比较常用数
    JDBC基础 JDBC的定义和目的 JDBC(JavaDatabaseConnectivity)是一个用于执行SQL语句的JavaAPI,可以与多种关系数据库进行交互,这的API由一组用Java语言编写的类和接口组成。 JDBC鼓励供应商使用JDBC驱动程序,该驱动程序可以通过数据库管理系统的客户机接口与各个数......
  • Java常用的三个方法 `wait ` `notify` `notifyAll`
    常用的三个方法waitnotifynotifyAllwait();方法使当前线程进入等待状态,直到另一个线程调用该对象的notify()或notifyAll()方法来唤醒它notify();方法唤醒在该对象上调用wait()方法进入等待状态的一个线程,如果有多个线程在等待,则只会唤醒其中一个线程。notifyAll();方......
  • Java队列简介
    在现代应用程序开发中,队列是一种常见且强大的数据结构,用于存储和管理待处理的任务序列。结合MySQL数据库,我们可以利用队列实现任务的持久化存储与高效处理。本文将通过四个案例,详细介绍如何在Java中使用队列,并结合MySQL数据库实现数据的存储与检索,涵盖基础队列操作、消息队列......
  • Java项目:基于SSM框架实现的社区服务管理系统分前后台(ssm+B/S架构+源码+数据库+毕业论
    一、项目简介本项目是一套基于SSM框架实现的社区服务管理系统包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。项目都经过严格调试,eclipse或者idea确保可以运行!该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值二、技术......
  • Java异常中throw 与throws的区别
    throw与throws区别在Java中,throws和throw是两个不同的关键字,它们在异常处理中起着不同的作用。throws关键字:throws用于声明一个方法可能会抛出的异常。当一个方法可能会抛出异常时,我们需要使用throws关键字在方法签名中声明这些异常。这样,调用该方法的代码就需要处理这些异......
  • Java中try catch finally 关键字
    异常处理中的几个常用关键字(trycatchfinallythrowthrows)异常处理java中提供一套异常处理机制,在程序发生异常时,可以执行预先设定好的处理程序,执行完成后,程序不会停止,可以继续向后执行.在写代码的时候,就要根据不同的情况设定好处理程序,运行程序......