黑马程序员技术交流社区

标题: 网络编程,字节流上传文本文件出错,求助 [打印本页]

作者: momoxixi    时间: 2015-11-21 20:58
标题: 网络编程,字节流上传文本文件出错,求助
本帖最后由 momoxixi 于 2015-11-21 21:12 编辑

如题,用来传文本文件为什么传到服务器端的就变成空的了 或者是一半文字然后乱码 这是什么情况?  图片视频等格式测试无问题,只有文本文件出问题. 按理说 字节流不是也可以传递文本的吗?..
代码如下
客户端
  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. }
复制代码

作者: momoxixi    时间: 2015-11-21 21:09
求助呀 急
作者: momoxixi    时间: 2015-11-21 21:30
已在悬赏中心发布 http://bbs.itheima.com/thread-262293-1-1.html
作者: momoxixi    时间: 2015-11-21 22:03
好吧..我知道问题出在哪了..通道读写数据的时候要flush 不然会导致最后一部分丢失




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2