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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5黑马币
如题,TCP方式 自己给自己传文件用来传文本文件为什么传到服务器端接收后就变成空的了 或者是一半文字然后几个乱码 这是什么情况?
图片视频等格式测试无问题,只有文本文件出问题. 按理说 字节流不是也可以传递文本的吗?..
系统是Mac OS  编码一直都默认的UTF-8
代码如下
客户端
  1. import java.io.*;
  2. import java.net.Socket;

  3. /**
  4. * Created by mo on 15/11/21.
  5. *
  6. * 需求:上传文件到服务器
  7. */
  8. public class Upload {
  9.     public static void main(String[] args) throws IOException {
  10.         Socket socket = new Socket("192.168.0.100",25255);

  11.         BufferedInputStream br = new BufferedInputStream(new FileInputStream("/Users/mo/day26.txt"));
  12.         BufferedOutputStream  bw = new BufferedOutputStream(socket.getOutputStream());

  13.         int len;
  14.         byte[] arr = new byte[2048];
  15.         while ((len=br.read(arr)) != -1){
  16.             bw.write(arr,0,len);
  17.         }

  18.         //上传完了就给个结束标记,告诉服务器已经传完了,别等了
  19.         socket.shutdownOutput();

  20.         InputStream rec = socket.getInputStream();
  21.         int end ;
  22.         byte[] arr1 = new byte[1024];
  23.         end = rec.read(arr1);
  24.         System.out.println(new String(arr1,0,end));


  25.         br.close();
  26.         socket.close();
  27.     }
  28. }
复制代码


服务器端
  1. import java.io.*;
  2. import java.net.ServerSocket;
  3. import java.net.Socket;

  4. /**
  5. * Created by mo on 15/11/21.
  6. */
  7. public class Server {
  8.     public static void main(String[] args) throws IOException{
  9.         ServerSocket serverSocket = new ServerSocket(25255);

  10.         Socket s = serverSocket.accept();

  11.         BufferedInputStream br = new BufferedInputStream(s.getInputStream());
  12.         BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream("day26.txt"));
  13.         byte[] arr = new byte[2048];
  14.         int len;
  15.         while ((len=br.read(arr))!=-1){
  16.             bw.write(arr,0,len);
  17.         }

  18.         OutputStream sd = s.getOutputStream();
  19.         sd.write("文件上传完毕".getBytes());

  20.         bw.close();
  21.         s.close();
  22.     }
  23. }
复制代码


最佳答案

查看完整内容

bw.flush()刷新下

1 个回复

正序浏览
bw.flush()刷新下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马