首页 > 编程语言 >Java IO流 flush()的作用和缓冲流

Java IO流 flush()的作用和缓冲流

时间:2023-05-16 18:24:17浏览次数:58  
标签:buffered Java stream 包装 缓冲 IO flush 缓冲区

Java 缓冲流和flush()的作用

哪些流是缓冲流,哪些流带有缓冲区?

根据Java官方文档关于Buffered Streams的介绍,缓冲流有四种:

  • BufferedInputStream:包装字节输入流
  • BufferedOutputStream:包装字节输出流
  • BufferedReader:包装字符输入流
  • BufferedWriter:包装字符输出流
    这些流又被称为包装流/处理流,用于包装非缓冲的流

There are four buffered stream classes used to wrap unbuffered streams: BufferedInputStream and BufferedOutputStream create buffered byte streams, while BufferedReader and BufferedWriter create buffered character streams.
——JAVA Documentation:Basic I/O

所以被包装流包装过的流都是使用缓冲区的;
缓冲流使用缓冲区;
字节流默认不使用缓冲区;
字符流使用缓冲区。

flush()方法的作用

flush():冲洗缓冲区,强制将缓冲区中的数据全部写入目标位置,清空缓冲区,不关闭流对象;

为什么用flush():在使用Bufferd Streams输出流对象时,我们需要对缓冲区进行冲洗,因为我们读取数据时,数据会先被读取在缓冲区中,为了确保输出流中的数据被全部写入,要flush缓冲区,否则数据会停留在缓冲区,不会输出,导致数据损失;

flush() :To flush output stream, use void flush() method of DataOutputStream class. This method internally calls flush() method of underlying OutputStream class which forces any buffered output bytes to be written in the stream.
源自:https://stackoverflow.com/a/9272658/21906030

Flushing Buffered Streams
It often makes sense to write out a buffer at critical points, without waiting for it to fill. This is known as flushing the buffer.
.
Some buffered output classes support autoflush, specified by an optional constructor argument. When autoflush is enabled, certain key events cause the buffer to be flushed. For example, an autoflush PrintWriter object flushes the buffer on every invocation of println or format. See Formatting for more on these methods.
.
To flush a stream manually, invoke its flush method. The flush method is valid on any output stream, but has no effect unless the stream is buffered
——JAVA Documentation:Basic I/O

标签:buffered,Java,stream,包装,缓冲,IO,flush,缓冲区
From: https://www.cnblogs.com/zh-Note/p/17403308.html

相关文章

  • Java static、final、static final 以及final static区别
    一、相同点都是Java修饰符二、不同点finalfinal修饰类:表示该类不能被继承;final修饰方法:表示该方法不能被重写;final修饰方法参数:表示在变量的编译期中它的值不能被改变;final修饰变量:包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲......
  • Java:static关键字
    (一)static关键字的基本用法1.static关键字基本概念我们可以一句话来概括:方便在没有创建对象的情况下来进行调用。也就是说:被static关键字修饰的不需要创建对象去调用,直接根据类名就可以去访问。2.static关键字修饰类Java里面static一般用来修饰成员变量或函数。但有一种特殊用......
  • Java public、protected、default和private四种修饰符区别
    一、相同点都是修饰符二、不同点访问权限不同public任何地方都可以访问,被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。****protected修饰符,权限介于public与default之间。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类......
  • 什么是表达式(expression)以及表达式的类型是什么?
    表达式:表达式是运算符、常量和变量的组合。一个表达式可以由一个或多个操作数和零个或多个运算符组成以产生一个值。 例子:a+bCs-1/7*f..ETC表达式类型:表达式可以是以下类型:常量表达式:常量表达式仅包含常量值。恒定值是不变的值。例子:5,10+5/6.0,'x'积分......
  • SAP Fiori Tools 里 proxy 中间件的使用场景介绍
    使用proxy中间件可以让开发人员通过配置的方式连接不同的后台系统,或者是切换不同的SAPUI5版本。下面是一个典型的ui5.yaml里的proxy配置文件的例子:-name:fiori-tools-proxyafterMiddleware:compressionconfiguration:backend:-path:/sapur......
  • 使用 SAP Fiori Tools 自带的代理服务器解决本地运行的 SAP UI5 应用访问远端服务遇到
    我们部署在本地开发环境运行的SAPUI5应用,由于浏览器安全策略的限制,无法直接访问远端OData服务,原因是我们的SAPUI5应用本地运行在localhost这个域名上,而远端请求的OData服务的域名比如说services.odata.org,二者不是同一个域名,由于浏览器安全策略,浏览器拒绝这种跨域的......
  • 使用 SAP Fiori tools 开发 SAP UI5 应用
    SAPFioritools通过为SAPBusinessApplicationStudio和VSCode开发环境提供扩展功能,简化了SAPFioriElements应用程序的开发。SAPFioritools扩展功能可帮助开发人员创建应用程序、可视化导航、自动生成代码等。结合SAPFioriElements使用,这些扩展可以提高开发效......
  • java 获取ip
     获取ip信息publicstaticStringgetRealIp(HttpServletRequestrequest){Stringip=request.getHeader("x-forwarded-for");if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){ip=request.g......
  • SAP Fiori Elements 本地应用启动的三种模式辨析试读版
    本教程前一步骤,我们介绍了在VisualStudioCode里使用命令行npmrunstart启动SAPFioriElements应用的方法:3.动手运行第一个SAPFioriElements应用有细心的学习者发现了,笔者提供的这个FioriElements应用的package.json文件的scripts区域里,除了定义了名为st......
  • SAP Fiori Tools 的 Application Reload Middleware 介绍
    通过applicationreloadmiddleware的帮助,开发者可以在进行FioriElements开发的过程中,即时预览这些尚未完全完成开发的应用。即时的意思是,一旦有FioriElements项目相关的文件发生变化,ApplicationReloadmiddleware会自动刷新应用。npx是一个Node.js工具,它可以让......