到底printwriter中println方法与write方法有什么区别

chenguangwei 2009-01-09 01:40:31
请问一下,我下面的程序把带颜色的println改成printwriter中的write方法就不行了,到底printwriter中println方法与write方法有什么区别!非常感谢!
这是服务器端程序:
import java.io.*;
import java.net.*;

public class talkserver
{
public static void main(String args[])
{
try
{
ServerSocket server = null;
try
{
server = new ServerSocket(4700);
}catch(Exception e)
{
System.out.println("can not listen to:" + e);
}
Socket socket = null;
try
{
socket = server.accept();
}catch(Exception e)
{
System.out.println("Error:" + e);
}
String line;
BufferedReader is = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
PrintWriter os = new PrintWriter(socket.getOutputStream());
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Client:" + is.readLine());
line = sin.readLine();
while (!line.equals("bye"))
{
os.println(line);
os.flush();
System.out.println("Server:" + line);
System.out.println("Client:" + is.readLine());
line = sin.readLine();
}

is.close();
os.close();
socket.close();
server.close();
}catch(Exception e)
{
System.out.println("Error" + e);
}
}
}
这是客户端:

import java.io.*;
import java.net.*;
public class talkclient
{
public static void main(String args[])
{
try
{
Socket socket = new Socket("127.0.0.1",4700);
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
PrintWriter os = new PrintWriter(socket.getOutputStream());
BufferedReader is = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String readline;
readline = sin.readLine();
while (!readline.equals("bye"))
{
os.[color=#0000FF]println(readline);[/color]
os.flush();
System.out.println("Client:" + readline);
System.out.println("Server:" + is.readLine());
readline = sin.readLine();
}
os.close();
is.close();
socket.close();
}catch(Exception e)
{
System.out.println("Error" + e);
}
}
}
...全文
2519 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tarbitrary 2012-04-07
  • 打赏
  • 举报
回复
好帖。
wecoco1573 2012-01-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xuewei1986xue 的回复:]

PrintWriter中的readLine()方法是读一个文本行,只有读取到回车或换行符号时,一行文本才读取完成。其实用write()方法也可以实现,稍作修改os.write(line+“\n”)
[/Quote]

多谢了!!!
lk339496143 2011-05-31
  • 打赏
  • 举报
回复
7L和10L 谢谢你俩,你俩说这个太对了,解决了困然我好几天的问题了,不过其他的回帖太不靠谱了,拜托大家,不明白就别回帖,你们说的都对,但是不在点子上,
7L 10L 好厉害
「已注销」 2011-05-16
  • 打赏
  • 举报
回复
PrintWriter中的readLine()方法是读一个文本行,只有读取到回车或换行符号时,一行文本才读取完成。其实用write()方法也可以实现,稍作修改os.write(line+“\n”)
hunanlifeng 2009-04-14
  • 打赏
  • 举报
回复
关键在于你使用了readline因为他会等待换行结束符,如果没有换行的话它会一直阻塞在那里
stonegreen72 2009-03-08
  • 打赏
  • 举报
回复
。。。。另一端的readLine就会等待换行符导致程序暂停。
stonegreen72 2009-03-08
  • 打赏
  • 举报
回复
以下两个语句作用相同:
pw.write("dat10.txt\n");
pw.println("dat10.txt");

如果仅仅pw.write("dat10.txt")的话,另一端的readLine就会等待换行符导致程序终止。
chasewinds 2009-02-21
  • 打赏
  • 举报
回复
回帖 看看有没有分
lihan6415151528 2009-01-11
  • 打赏
  • 举报
回复
println(string)可以输出一个对象
write(string)流的形式, 不可以输出对象
不善^ 2009-01-11
  • 打赏
  • 举报
回复
println 是把数据打印到 屏幕上
wirte 是向外写 比如写到某个文件里
看下IO就知道了么
另外有 两个类里的方法有不同的
living10 2009-01-11
  • 打赏
  • 举报
回复
println(string)打印一个串,结束此行。
write(string) 写入一串。
liuzhengkang 2009-01-10
  • 打赏
  • 举报
回复
readLine()是要输入回车/换行才结束的!!
rumlee 2009-01-09
  • 打赏
  • 举报
回复
这是print方法的源码

public void print(Object obj) {
write(String.valueOf(obj));
}

可以看到其实print方法就是调用write方法实现的,只不过将object转换成String了,其它的应该没有区别,建议你研究一下java源码。

62,614

社区成员

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

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