关于JAVA中流的flush问题
来源:互联网 发布:linux setid 编辑:程序博客网 时间:2024/04/29 20:51
目前在学习Socket,因为和IO关系紧密,于是顺便也学了下IO
发现有这样一句话:
The flush method is valid on any output stream,but has no effect unless the stream is buffered
这句话意思是所有的输出流都有flush方法,但是仅对缓冲流有效
看到这里,笔者想到了自己写的serversocket类,部分代码如下,没有用buffered流也调用了flush方法啊?于是进行了一番探讨
private OutputStream ous;ous = socket.getOutputStream();public void sendMsg(String msg){PrintWriter out = new PrintWriter(ous);out.println("消息:"+msg);out.flush();}
看到这里用PrintWriter包装了OutputStream流,OutputStream肯定为非缓冲流,所以问题一定出在PrintWriter上
让我们来看一下PrintWriter的底层代码,部分相关代码如下
public class PrintWriter extends Writer { protected Writer out; private final boolean autoFlush; /** * Creates a new PrintWriter, without automatic line flushing. * * @param out A character-output stream */ public PrintWriter (Writer out) { this(out, false); } /** * Creates a new PrintWriter. * * @param out A character-output stream * @param autoFlush A boolean; if true, the <tt>println</tt>, * <tt>printf</tt>, or <tt>format</tt> methods will * flush the output buffer */ public PrintWriter(Writer out, boolean autoFlush) { super(out); this.out = out; this.autoFlush = autoFlush; lineSeparator = java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("line.separator")); } public PrintWriter(OutputStream out) { this(out, false); }}如上所示,这样我们就很清楚了,当调用包装OutputStream的构造方法时,autoFlush参数是falus
2 0
- 关于JAVA中流的flush问题
- 关于java中流的知识的整理
- Java中流的问题总结(实例)
- 关于java 中流读取时遇到的阻塞和返回-1的问题探究
- JAVA中流的概念
- Java中流的概念
- java中流的应用
- java中流的操作
- java中流的分类
- Java中流的概念
- Java中流的分类
- Java中流的分割
- 黑马程序员_关于JAVA中流缓冲区的效率探索
- 关于java中流的使用--文件以及socket
- 关于Java基础中流的概述及序列化
- java-io-flush问题
- 关于fstream的flush
- 关于java I/O中flush方法作用的理解
- 我的飞天,我的众和
- Windows-linux rsync安装配置
- 【ASP】数据库查询的内容分页显示
- C++Primer plus 例题
- Unity资源增量更新
- 关于JAVA中流的flush问题
- ungui响应
- 2014,飞天众和团队等你来!
- 黄金数据查询演示示例
- 多种HTTP服务器:Misultin, Mochiweb, Cowboy, NodeJS 及 Tornadoweb测评
- Android Launcher分析和修改5——HotSeat分析
- BeeFramework学习(一):Hello World
- Unity 代码增量更新
- 获取验证码之后出现一个倒计时按钮