关于流flush()与close()问题

zhengshuihong 2013-12-12 12:46:02
import java.net.*;
import java.io.*;
public class TClient{
public static void main(String [] args)throws Exception{
Socket s=new Socket("127.0.0.1",6666);
OutputStream out=s.getOutputStream();
DataOutputStream write=new DataOutputStream(out);
write.writeUTF("nihao");
write.flush();
write.close();
s.close();
}
}





import java.net.*;
import java.io.*;
public class TServer{
public static void main(String[]agrs ) throws Exception{
ServerSocket ss =new ServerSocket(6666);
while(true){
Socket s=ss.accept();
System.out.print("linted");
DataInputStream read=new DataInputStream(s.getInputStream());
System.out.print(read.readUTF());
read.close();
s.close();
}
}
}


write.flush()那么为什么read流就不用flush()?
OutputStream out为什么不用关呢?
...全文
2450 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
大哥啊!一个是读取,读取的时候你文件里的内容会变化吗?? 显然是不会的,如果你写入的话,你的文本就会改变了,所以你就要用刷新了。
dabing69221 2013-12-12
  • 打赏
  • 举报
回复
引用 楼主 u010287723 的回复:
import java.net.*; import java.io.*; public class TClient{ public static void main(String [] args)throws Exception{ Socket s=new Socket("127.0.0.1",6666); OutputStream out=s.getOutputStream(); DataOutputStream write=new DataOutputStream(out); write.writeUTF("nihao"); write.flush(); write.close(); s.close(); } } import java.net.*; import java.io.*; public class TServer{ public static void main(String[]agrs ) throws Exception{ ServerSocket ss =new ServerSocket(6666); while(true){ Socket s=ss.accept(); System.out.print("linted"); DataInputStream read=new DataInputStream(s.getInputStream()); System.out.print(read.readUTF()); read.close(); s.close(); } } } write.flush()那么为什么read流就不用flush()? OutputStream out为什么不用关呢?
这说明楼主对IO流还没有真正的领悟到其中的精髓,read流有好几种,用不用flush(),取决于你使用的什么read流,建立楼主看看这个 http://blog.csdn.net/dabing69221/article/details/16996877 还有关于IO流的东西 http://blog.csdn.net/dabing69221/article/details/17055503
异常异长 2013-12-12
  • 打赏
  • 举报
回复
搬运工木木 2013-12-12
  • 打赏
  • 举报
回复
我个人揣测 write会有flush这个方法,是因为写内存与 写磁盘/网络 在速度上有个等级差距,所以一般会先写到缓存中,再写入低速设备。 而read,是从低速中读,一次读取一大块内容提高性能倒是有,不过对于网络,似乎数据还没到之前想读也读不到,还不如读一点处理一点相对好一些吧。。。。
oh_Maxy 2013-12-12
  • 打赏
  • 举报
回复
write的flush,是想要不关闭write流的情况下,将已写入缓存的内容发出去。read只是读操作,没有flush。 out不关,是因为out来自socket,socket关了,就不用再关一次out了
乔不思 2013-12-12
  • 打赏
  • 举报
回复
其实这个取决于你

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧