java流的flush_JAVA:OutputStream流的flush()方法介绍,该方法的“刷新此输出流”,这句是什么意思?...

JAVA:OutputStream流的flush()方法介绍,该方法的“刷新此输出流”,这句是什么意思?

关注:294  答案:2  mip版

解决时间 2021-02-02 07:14

e6cb1a03ad541b3098697807b7bf1798.png

提问者这笑,有多危险

2021-02-01 20:40

JAVA:OutputStream流的flush()方法介绍,该方法的“刷新此输出流”,这句是什么意思?

最佳答案

e6cb1a03ad541b3098697807b7bf1798.png

二级知识专家趁我还喜欢

2021-02-01 21:41

您好,提问者:

我举个例子,比如你写入:123

此时没有调用flush()也没有调用close()方法,那么该内容就不会写到内存中,而是写入到了内存流中。

flush()就是将内存流中的内容写入到文件中并且清空内存流中的内容。

当调用close()方法时,里面也会调用flush();

全部回答

e6cb1a03ad541b3098697807b7bf1798.png

1楼爷自有爷的范

2021-02-01 22:04

flush

public void flush()throws ioexception

刷新此输出流并强制写出所有缓冲的输出字节。flush 的常规协定是:如果此输出流的实现已经缓冲了以前写入的任何字节,则调用此方法指示应将这些字节立即写入它们预期的目标。

什么是预期的目标?比如对于输入出流fileoutputstream("1.txt"),文件"1.txt"就是它预期的目标。上体请看下面的程序。

import java.io.*;

public class aboutflush

{

public static void main(string args[]){

try{

fileinputstream fis=new fileinputstream("1.pdf");

fileoutputstream fos=new fileoutputstream("2.pdf");

byte b[]=new byte[20];

int number;

while((number=fis.read(b))!=-1){

fos.write(b, 0, number);

//flush 你也可以在这里用。但一般不提倡

//将数据先存入缓冲区有利于提高效率

//不过,有时是必要的。

}

fos.flush();//这里,是指将所有的数据,全部写入输出流"2.pdf"

fis.close();

fos.close();

}catch(ioexception e){}

}

}

//当然,对于bytearrayoutputstream来说,它的目标是一个数组,将数据写入

//这个数组。当然,最后可以一次性写入一个输出流(用writeto方法)。那么

//它的过程是:自主地将数据先写入数组,再全部写入某个输出流。那么,flush

//貌似没有意义了。因为,对于写入内存数组来说,不可能再先缓存进某个

//缓冲区(那样没什么意义)。而bytearrayoutputstream的预期目标肯定是

//在创建对象时隐式生成的数组缓冲区,而不可能是writeto的对象(因为这个

//对象是可变的,只有在写入时才指定)。所以,俺认为flush对于

//bytearrayoutputstream来说,没有意义

我要举报

如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

→点此我要举报以上信息!←

推荐资讯

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值