新手的一个问题

为什么非要关闭输出流才能写出所有数据啊

0

6个回答

[color=blue][b]
哦,不好意思。我看错了,你是从System.in得到的数据。

错误在你的bw写出数据,你没有写出换行符,因为你用的是write,但是你的服务器端,用的是readLine,是根据换行符读取的。[/b][/color]

[code="java"]while((str=br.readLine())!=null){

bw.write(str);
}
// 写出一个换行符
bw.newLine();
bw.flush(); [/code]

0

什么输出流? 不通的输出流的实现不同。 关闭操作都有,标示一次操作完成。

0

因为操作系统将数据写入到硬盘上时,有个缓冲区,如果没有明确的要求理解写入,数据先放入到缓冲区中,然后待缓存区满的时候,操作系统会自动的将数据写入到硬盘。

所以如果不调用flush或者close,这些数据就会存在于缓冲区中,没有写入到硬盘中。

0

你的Client在等待读Server的发来的信息,而Server又在等待Client发来的信息。

Client和Server也读不到内容,都在堵塞地等待对方。

0

长连接,且实时通信你可以换成管道流。 或每次循环都执行开关流操作。

0

换行是个好办法。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!