当前位置:首页 » 编程语言 » flushjava

flushjava

发布时间: 2025-03-03 04:27:01

‘壹’ java ByteArrayOutputStream flush

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来说,没有意义

‘贰’ java bufferedwriter flush 必要性问题

public class BufferedWriterextends Writer将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。

flush是刷新该流的缓冲,就是将缓冲区里的内容全部刷出去, 这与大缓冲区大小无关。而该类提供的 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 ('\n') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。

以上主要来自java api

热点内容
代码块编程 发布:2025-03-03 17:22:06 浏览:325
计算几何c语言描述 发布:2025-03-03 17:07:25 浏览:273
哈佛黑标是什么配置 发布:2025-03-03 16:54:30 浏览:387
武林志怎么改配置 发布:2025-03-03 16:49:53 浏览:12
编程珠玑第二版 发布:2025-03-03 16:24:50 浏览:60
国网统一权限密码是多少 发布:2025-03-03 16:24:07 浏览:130
如何打开通讯录的密码 发布:2025-03-03 15:53:13 浏览:63
c语言中a2 发布:2025-03-03 15:25:42 浏览:556
黄箱算法 发布:2025-03-03 15:20:46 浏览:768
php的ppt 发布:2025-03-03 15:20:42 浏览:43