java的IO流 flush()方法
缓存流需要flush()可是为什么很多其他处理流比如DataOutputStream也要flush()...
缓存流需要flush() 可是为什么很多其他处理流比如DataOutputStream也要flush()
展开
3个回答
展开全部
java的IO流 flush()方法jdk中的定义:
public void flush() throws IOException
刷新此输出流并强制写出所有缓冲的输出字节。
flush 的常规协定是:如果此输出流的实现已经缓冲了以前写入的任何字节,则调用此方法指示应将这些字节立即写入它们预期的目标。
如果此流的预期目标是由基础操作系统提供的一个抽象(如一个文件),则刷新此流只能保证将以前写入到流的字节传递给操作系统进行写入,但不保证能将这些字节实际写入到物理设备(如磁盘驱动器)。
OutputStream 的 flush 方法不执行任何操作。
指定者:
接口 Flushable 中的 flush
抛出:
IOException - 如果发生 I/O 错误。
public void flush() throws IOException
刷新此输出流并强制写出所有缓冲的输出字节。
flush 的常规协定是:如果此输出流的实现已经缓冲了以前写入的任何字节,则调用此方法指示应将这些字节立即写入它们预期的目标。
如果此流的预期目标是由基础操作系统提供的一个抽象(如一个文件),则刷新此流只能保证将以前写入到流的字节传递给操作系统进行写入,但不保证能将这些字节实际写入到物理设备(如磁盘驱动器)。
OutputStream 的 flush 方法不执行任何操作。
指定者:
接口 Flushable 中的 flush
抛出:
IOException - 如果发生 I/O 错误。
展开全部
看了你的追问 我来回答
DataOutputStream继承FilterOutputStream
FilterOutputStream继承OutputStream
flush()是OutputStream中的方法,所以DataOutputStream
自然有flush()方法。
DataOutputStream继承FilterOutputStream
FilterOutputStream继承OutputStream
flush()是OutputStream中的方法,所以DataOutputStream
自然有flush()方法。
追问
OutputStream中的flush()应该是没有方法体的,DataOutputStream中的flush()重写了? 它到底有没有缓冲功能
追答
/**
* Flushes this data output stream. This forces any buffered output
* bytes to be written out to the stream.
*
* The flush method of DataOutputStream
* calls the flush method of its underlying output stream.
*
* @exception IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
* @see java.io.OutputStream#flush()
*/
public void flush() throws IOException {
out.flush();
}
本身没有缓冲,但是可以实现缓冲 所以都有flush方法,上面的是DataOutputStream flush的源码
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-14
展开全部
其实,是不是要flush,看使用的环境的。一般是发送、输出完就要关闭,才用flush
追问
我问题在于,DataOutputStream有缓冲功能吗?如果没有怎么会有flush()方法
追答
API文档中说有,那就是有
flush
public void flush()
throws IOException
Flushes this data output stream. This forces any buffered output
bytes to be written out to the stream.
The flush method of DataOutputStream
calls the flush method of its underlying output stream.
Specified by:
flush in interface Flushable
Overrides:
flush in class FilterOutputStream
Throws:
IOException - if an I/O error occurs.
See Also:
FilterOutputStream.out,
OutputStream.flush()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询