黑马程序员技术交流社区
标题:
网络编程换行的问题
[打印本页]
作者:
黑马张旭明
时间:
2012-9-11 22:28
标题:
网络编程换行的问题
import java.io.*;
import java.net.*;
class TextClient
{
public static void main(String[] args)throws Exception
{
Socket s = new Socket("169.254.56.62",10006);
BufferedReader bufr =
new BufferedReader(new FileReader("IPDemo.java"));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
String line = null;
while((line=bufr.readLine())!=null)
{
out.println(line);
//out.print(line);
//这里的原来只有out.println(line);我换成了out.ptint(line);out.print("\r\n");
//out.print("\r\n");
}
//out.println("over");
s.shutdownOutput();
BufferedReader bufIn = new BufferedReader(new InputStreamReader
(s.getInputStream()));
String str = bufIn.readLine();
System.out.println(str);
bufr.close();
s.close();
}
}
class TextServer
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10006);
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"......connected");
BufferedReader bufIn = new BufferedReader(new InputStreamReader
(s.getInputStream()));
PrintWriter out = new PrintWriter(new FileWriter
("server.txt"),true);
String line = null;
while((line=bufIn.readLine())!=null)
//这的readLine()没有遇到换行是会一直等待的吧
{
out.println(line);
}
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
pw.println("上传成功");
out.close();
s.close();
ss.close();
}
}
老师说println自带换行,
我把
out.println(line);换成了out.ptint(line)运行完了也输出“上传成功”,也没有等待现象,但是文件却是空的。
接着用out.print(line);out.print("\r\n");结果和只用out.ptint(line);是一样的。
我想问自己输入换行数据为什么没传成功,没成功为什么还是执行完了,应该等待的啊。
作者:
程金
时间:
2012-9-14 12:38
你这里是printWirter ,和printStream不一样,prntsteam遇到换行符就会自动刷新缓存,而printWirter不会,,他自动flush只有在遇到println,printf,格式化方法被调用的时候,所以你用println()能刷新,而用print()+换行不能刷新,所以文件是空的
作者:
李菁
时间:
2012-9-14 12:44
没有数据是因为没刷新缓冲区中的数据,没有换行标记是不能刷新的
作者:
尤圣回
时间:
2012-9-14 12:54
new line();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2