`
uule
  • 浏览: 6358239 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

JAVA IO流中的flush

 
阅读更多

前言: 

   大家在使用Java IO流中OutputStream、PrintWriter ……时,会经常用到它的flush()方法。

一.为什么要flush:

  与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存。这可以通过BufferedOutputStream或BufferedWriter 链接到底层流上来实现。因此,在写

  完数据时,flush就显得尤为重要。

例如:

 

  上图中WEB服务器通过输出流向客户端响应了一个300字节的信息,但是,这时的输出流有一个1024字节的缓冲区。所以,输出流就一直等着WEB服务器继续向客户端响应信 息,当WEB服务器的响应信息把输出流中的缓冲区填满时,这时,输出流才向WEB客户端响应消息

  为了解决这种尴尬的局面,flush()方法出现了。flush()方法可以强迫输出流(或缓冲的流)发送数据,即使此时缓冲区还没有填满,以此来打破这种死锁的状态。

  当我们使用输出流发送数据时,当数据不能填满输出流的缓冲区时,这时,数据就会被存储在输出流的缓冲区中。如果,我们这个时候调用关闭(close)输出流,存储在输出流的缓冲区中的数据就会丢失。所以说,关闭(close)输出流时,应先刷新(flush)换冲的输出流,话句话说就是:“迫使所有缓冲的输出数据被写出到底层输出流中”。

 

二.解读flush()源码:

下面以BufferedOutputStream类为例:

publicclass BufferedOutputStream extends FilterOutputStream
{   
     publicsynchronizedvoid flush()  throws IOException
     {
        flushBuffer();
        out.flush();
     }

    privatevoid flushBuffer()  throws IOException

    {
        if(count > 0)
        {
            out.write(buf, 0, count);
            count = 0;
        }
     }
}

 看到这里大家明白了吧,其实flush()也是通过out.write()将数据写入底层输出流的。

 

 

分享到:
评论

相关推荐

    Java IO流 总结

    Java IO流是Java语言中最基本和最重要的输入/输出机制,负责将数据从外部世界输入到Java应用程序中或将数据从Java应用程序输出到外部世界。IO流可以分为两大类:字节流和字符流。 1. 节点流:离数据源|程序最近的流...

    java io 流,文件读取操作

    Java IO 流是 Java 语言中的一种基本输入/输出机制,它提供了多种方式来处理输入/输出操作。在 Java 中,IO 流可以分为两大类:字节流和字符流。字节流主要用于处理二进制数据,而字符流主要用于处理文本数据。 一...

    java中的io流详解

    Java 中的 IO 流详解 Java 中的 IO 流是指在 Java 语言中对输入输出操作的抽象,主要用于实现程序与外部设备和其他计算机之间的交流,尤其是对磁盘文件的操作。IO 流的概念是在 1984 年由 C 语言第一次引入的,后来...

    java io流-3.pdf

    - **1.1 什么是流**:流是一种连续的数据序列,Java中的流可以是输入流或输出流。 - **1.2 数字数据处理**:Java提供了多种处理数字数据的方法,包括`int`、`float`等类型的读写操作。 - **1.3 字符数据处理**:通过...

    java IO流(包含类之间的关系图)

    Java IO流是Java语言中用于输入/输出操作的基础组件,涵盖了字节流和字符流两大类别。了解IO流的类之间的关系图是初学者学习Java IO流的基础。 字节流 字节流是Java IO流中最基本的流类型,用于处理二进制数据。...

    javaio流学习总结.pdf

    JavaIO流是Java语言中最基本的输入/输出机制,它提供了多种方式来读取和写入数据。下面是JavaIO流的学习总结。 一、 IO流的分类 IO流可以从不同的角度进行分类,包括: * 按流的方向分为:输入流和输出流 * 按流...

    java IO 流详细分析

    本文将对Java中的IO流进行全面而深入的分析,帮助读者更好地理解和使用Java IO。 #### 二、Java IO流分类 Java IO流可以分为两大类:字节流和字符流。这两种流的区别在于处理的数据单位不同,字节流处理的是字节...

    javaio流学习总结范文.doc

    Java IO 流是Java平台中用于处理输入输出的重要机制,它允许程序与外部设备(如硬盘、网络、内存等)之间传输数据。本篇总结主要围绕Java IO流的基础概念、分类以及常用方法展开。 首先,Java IO流按照数据流动的...

    JAVA_IO流学习总结

    在Java编程语言中,IO流是一种非常重要的数据输入输出方式,它提供了一系列的类和接口,用于实现数据在不同设备(如硬盘、内存、键盘、鼠标、网络等)之间的传输。Java IO流的学习主要涉及到以下几个方面的知识点: ...

    JavaIO流学习总结报告.doc

    Java IO流是Java平台中用于处理输入输出操作的重要部分,它提供了数据传输的抽象层,让我们能够方便地处理各种数据源和接收端。流的概念是将数据视作一个连续的字节序列,可以是读取(输入流)或写入(输出流)。...

    文档JAVA-IO流

    ### 文档JAVA-IO流 #### 一、IO流概述 1. **什么是IO** - I代表**输入**(input),O代表**输出**...通过上述知识点的学习,我们可以更好地理解和应用Java中的IO流技术,尤其是在处理文件读写以及文本处理方面。

    javaio流学习总结.docx

    Java IO 流是Java平台中用于处理输入输出操作的核心组件。在Java中,IO流被设计为一种通用的机制来处理数据的传输,无论是从文件、网络、设备还是内存。以下是对Java IO流的详细总结: 一、流的分类 1. 按流的方向...

    JAVA课件Java IO.ppt

    Java I/O系统是Java编程语言中的一个重要组成部分,用于处理数据的输入和输出。它提供了丰富的类库,使得程序员能够高效地读写文件、网络通信、处理内存数据等。本课件将详细介绍Java I/O流的基本概念、分类以及常用...

    javaIO流[归纳].pdf

    Java IO流是Java平台中用于处理输入输出的重要机制,它允许程序与外部设备(如硬盘、网络、内存等)之间交换数据。以下是对Java IO流的详细解释: 1. **IO流的分类**: - **按方向**:Java IO流分为输入流和输出流...

    java-io流学习总结.doc

    Java IO 流学习总结的主要内容是对 Java 语言中 IO 流的机制和应用进行了详细的介绍,包括流的基本概念、字节流和字符流的区别、IO 体系的基本结构、FileReader 和 FileWriter 的使用、IO 流的应用等等。

    Java IO字符流和字节流

    ### Java IO字符流和字节流详解 #### 一、引言 在Java编程中,输入输出(简称IO)操作是十分重要的一个方面。通过IO操作,我们可以读取文件、网络数据、用户输入等,也可以将数据写入到文件、网络、控制台等。Java...

    java IO(下)

    **过滤流**(处理流)是在Java IO系统中的一个重要概念,它建立在已有的流对象之上,并为其添加了额外的功能或性能优化。与节点流不同,过滤流本身并不直接连接到数据源或目标,而是作为中间层,通过装饰器模式对底层...

Global site tag (gtag.js) - Google Analytics