_six
2014-12-19 03:09
采纳率: 0%
浏览 6.8k

java关于PrintWriter调用write方法之后使用flush方法获取不到内容原因探究求解惑!

PrintWriter ps= new PrintWriter(socket.getOutputStream());

ps.write( "hello" );
ps.flush();
服务端获取不到hello信息,看了下PrintWriter源码,flush()中调用的是BufferedWriter中的flush(),如果这样的话,应该能刷新缓冲得到结果。但是没有。。。网上找到个说法,原文是这样的"为什么客户端调用了write()和flush()后,服务器端依然read不到数据。因为socket.getOutputStream()取到的实现类是java.net.SocketOutputStream,这个类并没有覆写flush方法,它的父类java.io.FileOutputStream也没有覆写,于是最终就调到了最顶层java.io.OutputStream的flush()方法,这就恶心了,这个方法是空的。于是...",如果这个说法是对的话,为什么我定义的PrintWriter对象会调用SocketOutputStream里面的flush()?如果这个说法不对,那么是什么导致调用write()之后flush()无效?求解惑,万分感谢!

5条回答 默认 最新

相关推荐 更多相似问题