Java中OutputStream.flush()具有什么功能呢?

转自:

Java中OutputStream.flush()具有什么功能呢?

下文讲述java中OutputStream.flush()方法的功能简介说明,如下所示:

OutputStream.flush()方法的功能: 
     用于清空输出流
 如:将所有写入到OutputStream的数据到相应的目标媒介中
 如:如果输出流是FileOutputStream,那么写入到其中的数据可能并没有真正写入到磁盘中
    即使所有数据都写入到了FileOutputStream,这些数据还是有可能保留在内存的缓冲区中
	通过调用flush()方法,可将缓冲区内的数据刷新到磁盘(或网络,以及其他任何形式的目标媒介)中

OutputStream.flush()方法的语法:
     public void flush()
参数说明
     无任何参数
返回值说明
     无任何返回

public static void main(String[] args) throws IOException
{
    Socket s = new Socket("127.0.0.1", 80);
    PrintWriter out = new PrintWriter(s.getOutputStream()); //这里的ture表示流会自动刷新,在后面可以不用使用flush()方法  
    out.println("GET /myweb/test.jsp HTTP/1.1");
    out.println("Accept: */*");
    out.println("Accept-Language: zh-CN");
    out.println("Accept-Encoding: gzip, deflate");
    out.println();
    out.flush(); // 清空缓存并输出流
    InputStream in = s.getInputStream();
    byte b[] = new byte[1024];
    int leng = 0;
    while((leng = in .read(b)) != -1)
    {
        String str = new String(b, 0, leng);
        System.out.println(str);
    }
    s.close();
}
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: outputstream.flush() 函数用于强制将缓冲区数据输出到目的地。如果没有反应,可能是因为缓冲区已经为空,或者输出目的地已经关闭。你可以检查一下缓冲区的状态,或者查看是否正确地关闭了输出目的地。如果这些都没有问题,那么可能是代码出现了其它问题导致 flush() 函数没有被正确执行。 ### 回答2: OutputStreamflush()方法用于将缓冲区的数据立即写入到输出流,确保数据被及时发送。但是当调用flush()方法没有反应时,可能有以下几种可能原因: 1. 缓冲区没有数据:如果在调用flush()方法之前没有向输出流写入任何数据,那么就不会有任何反应。因为flush()方法的作用是将缓冲区的数据写入到输出流,如果没有数据可写,就不会发生任何操作。 2. 输出流已经关闭:如果在调用flush()方法之前已经关闭了输出流,那么该方法也不会有任何反应。关闭输出流将导致输出流无法再写入数据,因此flush()方法也无法执行。 3. 输出流不支持flush()操作:并不是所有的输出流都支持flush()操作,有些特定类型的输出流可能不具备此功能。如果使用的是不支持flush()的输出流实例,调用flush()方法将不会有任何效果。 4. 操作系统或网络问题:在某些情况下,操作系统或网络可能会导致flush()方法无法正常工作。例如,网络连接断开或操作系统的写入缓冲区已满等情况,都可能导致flush()方法无法立即将数据发送出去。 如果flush()方法没有反应,我们可以逐步排除这些可能原因,检查是否在正确的时机调用该方法,确保输出流处于可写状态,并确定操作系统和网络环境是否正常。 ### 回答3: OutputStreamJava IO库用于写入数据的抽象类,其flush()方法用于将缓冲区的数据立即写入输出流。flush()方法的作用是强制将缓冲区的数据写入输出流,确保数据能够及时地发送到目标位置。如果不调用flush()方法,数据可能会被缓存起来,直到缓冲区满了或者关闭了输出流才会写入。 如果调用flush()方法后没有反应,可能会有以下几个原因: 1. 没有数据可刷新:如果在调用flush()方法之前没有写入任何数据到输出流,那么flush()方法也不会有任何作用,因为缓冲区没有数据需要刷新到输出流。 2. 输出流已关闭:如果在调用flush()方法之前关闭了输出流,那么flush()方法也没有任何效果。在关闭输出流之后,flush()方法会抛出异常或者忽略调用。 3. 输出流存在异常:如果在调用flush()方法之前发生了异常,那么flush()方法可能无法正常执行。在处理输出流的过程,如果发生异常,可能会造成flush()方法没有反应。 综上所述,如果OutputStreamflush()方法没有反应,可以检查是否有数据可刷新、输出流是否关闭以及输出流是否存在异常等情况。如果仍然无法解决问题,可以考虑使用其他的输出流实现或者查看相关文档以获取更多细节和解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值