A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 还是回去火星吧 中级黑马   /  2014-3-9 00:49  /  816 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.*;
  2. import java.net.*;
  3. class Test{
  4. public static void main(String[] args)throws Exception{
  5. //1.定义Socket服务,并指定IP和端口。
  6. Socket s=new Socket("192.168.0.104",222);
  7. //2.因为需要获取文件,所以定义读取源。
  8. BufferedReader bufr=new BufferedReader(new FileReader("D:\\DD\\a.txt"));
  9. //3.因为需要让对方接收到,得需要定义发送流。BufferedWriter 或者 PrintWriter
  10. PrintWriter out=new PrintWriter(s.getOutputStream(),true);
  11. String line=null;
  12. while((line=bufr.readLine())!=null){
  13. out.println(line);//写入。
  14. }
  15. s.shutdownOutput();//关闭客户端输出流,相当于给输出流加个结束标记-1.
  16. //4.传输完成时,会有服务器端传输过来的提示,所以定义一个Socket接收读取流。
  17. BufferedReader bufrIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
  18. String db=bufrIn.readLine();
  19. System.out.println(db);
  20. bufr.close();
  21. s.close();
  22. }
  23. }

  24. class Teacher{
  25. public static void main(String[] args)throws Exception{
  26. //1、创建ServerSocket、并指定端口。
  27. ServerSocket ss=new ServerSocket(222);
  28. //2、定义一个读取流,读取发送过来的数据。
  29. Socket s=ss.accept();
  30. BufferedReader bufr=new BufferedReader(new InputStreamReader(s.getInputStream()));
  31. //3.定义一个写入流,将读取过来的数据写入到目的地中。
  32. // BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\b.txt")));
  33. PrintWriter out=new PrintWriter(new FileWriter("D:\\b.txt",true));
  34. String line=null;
  35. while((line=bufr.readLine())!=null){
  36. out.println(line);
  37. // bufw.write(line);
  38. // bufw.newLine();
  39. }
  40. //4.客户端需要返回结果,所以定义一个Socket的输出流。
  41. BufferedWriter bufwOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
  42. bufwOut.write("传送完成");
  43. bufr.close();
  44. // bufw.close();
  45. bufwOut.close();
  46. s.close();
  47. }
  48. }
复制代码

因为本人用的是Eclipes,所以没法测试打印!  求各位大虾们解下。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

2 个回复

正序浏览
还是回去火星吧 发表于 2014-3-9 12:10
抱歉,看不到你说的意思,还是不知道怎么解决,我真的特菜!
使用PrintWriter,文件数据无法复制。但是使 ...

把你代码的第34行改为:PrintWriter out=new PrintWriter(new FileWriter("D:\\b.txt"),true);
autoFlush的值设置为true,这样就可以自动刷新了。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
zengming13 发表于 2014-3-9 09:05
你这个程序有两个三个问题
1.文件复制失败
2.服务端报异常

抱歉,看不到你说的意思,还是不知道怎么解决,我真的特菜!
使用PrintWriter,文件数据无法复制。但是使用BufferedWriter 就能写入数据。
只是反馈给客户端的信息为Null ! 就是说服务器的反馈信息那条代码没有执行到。
不知道问题出现在哪里了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马