请问一下,我下面的程序把带颜色的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);
}
}
}

解决方案 »

  1.   

    这是print方法的源码    public void print(Object obj) {
    write(String.valueOf(obj));
        }可以看到其实print方法就是调用write方法实现的,只不过将object转换成String了,其它的应该没有区别,建议你研究一下java源码。
      

  2.   

    readLine()是要输入回车/换行才结束的!!
      

  3.   

    println(string)打印一个串,结束此行。
    write(string) 写入一串。 
      

  4.   

    println 是把数据打印到 屏幕上
    wirte 是向外写 比如写到某个文件里
    看下IO就知道了么
    另外有 两个类里的方法有不同的  
      

  5.   

    println(string)可以输出一个对象
    write(string)流的形式, 不可以输出对象
      

  6.   

    以下两个语句作用相同:
    pw.write("dat10.txt\n");
    pw.println("dat10.txt");如果仅仅pw.write("dat10.txt")的话,另一端的readLine就会等待换行符导致程序终止。
      

  7.   

    。另一端的readLine就会等待换行符导致程序暂停。
      

  8.   

    关键在于你使用了readline因为他会等待换行结束符,如果没有换行的话它会一直阻塞在那里
      

  9.   

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

  10.   

    7L和10L 谢谢你俩,你俩说这个太对了,解决了困然我好几天的问题了,不过其他的回帖太不靠谱了,拜托大家,不明白就别回帖,你们说的都对,但是不在点子上,
    7L  10L 好厉害