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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© youcyou 中级黑马   /  2014-5-23 19:43  /  2614 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 youcyou 于 2014-5-28 11:12 编辑

代码如下,显示上传成功,文件夹唉创建正常  但是文件夹内无文件
  1. import java.io.FileInputStream;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.net.Socket;




  6. public class PicClient {
  7.         public static void main (String args[]) throws IOException
  8.         {
  9.                 Socket s = new Socket("192.168.1.108",10005);
  10.                
  11.                 FileInputStream fis = new FileInputStream("d:\\1.jpg");
  12.                
  13.                 InputStream in = s.getInputStream();
  14.                
  15.                 OutputStream out = s.getOutputStream();
  16.                
  17.                 byte by[] = new byte[1024];
  18.                 int len=0;
  19.                 while((len=fis.read())!=-1)
  20.                 {
  21.                         out.write(by,0,len);
  22.                 }
  23.                 s.shutdownOutput();
  24.                
  25.                 byte b[]=new byte[1024];
  26.                 int num = in.read(b);
  27.                 String str = new String(b,0,num);
  28.                 System.out.println(str);
  29.                
  30.                 fis.close();
  31.                 s.close();
  32.                
  33.                
  34.         }
  35. }
复制代码
  1. import java.io.IOException;
  2. import java.net.ServerSocket;
  3. import java.net.Socket;


  4. public class PicServer {

  5.         public static void main(String args[]) throws IOException

  6.         {
  7.                 System.out.println("上传服务器开启。。。");
  8.                 ServerSocket ss = new ServerSocket(10005);
  9.                 while(true)
  10.                 {
  11.                         Socket s= ss.accept();
  12.                         new Thread(new UpPic(s)).start();
  13.                 }
  14.                
  15.                 //ss.close();
  16.         }
  17. }
复制代码
  1. import java.io.File;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.net.Socket;


  7. public class UpPic implements Runnable {

  8.         
  9.         private Socket s;
  10.         UpPic(Socket s)
  11.         {
  12.                 super();
  13.                 this.s=s;
  14.         }
  15.         
  16.         
  17.         public void run() {
  18.                 String ip =s.getInetAddress().getHostAddress();
  19.                 System.out.println(ip+"...connected");
  20.                
  21.                 File file = getFile("e:\\server_pic", ip);
  22.                
  23.                 InputStream in ;
  24.                 try
  25.                 {
  26.                         in = s.getInputStream();
  27.                         FileOutputStream fos = new FileOutputStream(file);
  28.                         
  29.                         byte[] by = new byte[1024];
  30.                         int len =0;int count=1;
  31.                         while((len=in.read(by))!=-1)
  32.                         {
  33.                                 System.out.println(count++);
  34.                                 fos.write(by,0,len);
  35.                         }
  36.                         
  37.                         OutputStream out = s.getOutputStream();
  38.                         out.write("图片上传成功".getBytes());
  39.                         
  40.                         fos.close();
  41.                         s.close();
  42.                         
  43.                 }
  44.                 catch(IOException e)
  45.                 {
  46.                         e.printStackTrace();
  47.                 }

  48.         }


  49.         private File getFile(String dir, String ip) {
  50.                 // TODO 自动生成的方法存根
  51.                 File pic_dir = new File(dir);
  52.                 if(!pic_dir.exists())
  53.                 {
  54.                         pic_dir.mkdir();
  55.                 }
  56.                
  57.                 int count =1;
  58.                 File file = new File(ip+"_"+count+".jpg");
  59.                 while(file.exists())
  60.                 {
  61.                         
  62.                         file=new File(ip+"_"+count+".jpg");count++;
  63.                 }
  64.                 return file;
  65.         }

  66. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

3 个回复

正序浏览
BigKarel 发表于 2014-5-24 14:34
除了上面所说的一点,你的getfile方法只是创建了一个文件夹返回了一个图片格式文件,你的上传代码中并没把 ...

多谢指点
回复 使用道具 举报
本帖最后由 BigKarel 于 2014-5-24 14:36 编辑

除了上面所说的一点,你的getfile方法只是创建了一个文件夹返回了一个图片格式文件,你的上传代码中并没把上传的文件写入这个文件夹,可以说没有指定生成位置。我根据你的代码改了一些,不过我也没实现上传到指定文件夹中,只是在E盘根目录下。
  1. package client;

  2. import java.io.BufferedInputStream;
  3. import java.io.DataInputStream;
  4. import java.io.DataOutputStream;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.IOException;
  8. import java.net.Socket;

  9. public class PicClient {
  10.         public static void main(String args[]) throws IOException {
  11.                 Socket s = new Socket("192.168.1.101", 10085);
  12.                 DataOutputStream w = null;
  13.                 DataInputStream r = null;

  14.                 File file = new File("d:\\1.jpg");
  15.                 r = new DataInputStream(new BufferedInputStream(new FileInputStream(
  16.                                 file)));
  17.                 w = new DataOutputStream(s.getOutputStream());
  18.                 w.writeUTF("put" + "e:\\1.jpg");
  19.                 w.flush();
  20.                 byte[] buf = new byte[1024];
  21.                 int read = 0;
  22.                 while ((read = r.read(buf)) != -1) {
  23.                         w.write(buf, 0, read);
  24.                 }
  25.                 w.flush();
  26.                 s.close();
  27.                 r.close();
  28.                 System.out.println("上传成功!");

  29.         }
  30. }
复制代码

服务端
  1. package upPic;

  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.DataInputStream;
  5. import java.io.DataOutputStream;
  6. import java.io.File;
  7. import java.io.FileNotFoundException;
  8. import java.io.FileOutputStream;
  9. import java.io.IOException;
  10. import java.io.InputStream;
  11. import java.io.OutputStream;
  12. import java.net.Socket;

  13. public class UpPic implements Runnable {

  14.         private Socket s;

  15.         public UpPic(Socket s) {
  16.                 super();
  17.                 this.s = s;
  18.         }

  19.         public void run() {
  20.                 String ip = s.getInetAddress().getHostAddress();
  21.                 System.out.println(ip + "...connected");

  22.                 getFile("E:\\server_pic", ip);
  23.                 DataOutputStream w = null;// 写Socket
  24.                 DataInputStream r = null;// 读Socket
  25.                 DataOutputStream writer = null;// 写文件
  26.                 try {
  27.                         writer = new DataOutputStream(new BufferedOutputStream(
  28.                                         new FileOutputStream("E:\\1.jpg")));
  29.                         w = new DataOutputStream(s.getOutputStream());
  30.                         w.writeUTF("E:\\1.jpg");
  31.                         w.flush();
  32.                         r = new DataInputStream(new BufferedInputStream(s.getInputStream()));
  33.                         byte[] buffer = new byte[1024];
  34.                         int read = 0;
  35.                         while ((read = r.read(buffer)) != -1) {
  36.                                 writer.write(buffer, 0, read);
  37.                         }
  38.                         writer.flush();
  39.                         System.out.println("上传完毕!");
  40.                 } catch (FileNotFoundException e1) {
  41.                         e1.printStackTrace();
  42.                 } catch (IOException e) {
  43.                         e.printStackTrace();
  44.                 }

  45.         }

  46.         private File getFile(String dir, String ip) {
  47.                 // TODO 自动生成的方法存根
  48.                 File pic_dir = new File(dir);
  49.                 if (!pic_dir.exists()) {
  50.                         pic_dir.mkdir();
  51.                 }

  52.                 int count = 1;
  53.                 File file = new File(ip + "_" + count + ".jpg");
  54.                 while (file.exists()) {

  55.                         file = new File(ip + "_" + count + ".jpg");
  56.                         count++;
  57.                 }
  58.                 return file;
  59.         }

  60. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
客户端写入那里没有把数组放进去啊。。。害的我看了半天
  1. import java.io.FileInputStream;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.net.Socket;




  6. public class PicClient {
  7.         public static void main (String args[]) throws IOException
  8.         {
  9.                 Socket s = new Socket("192.168.1.108",10005);
  10.                
  11.                 FileInputStream fis = new FileInputStream("d:\\1.jpg");
  12.                
  13.                 InputStream in = s.getInputStream();
  14.                
  15.                 OutputStream out = s.getOutputStream();
  16.                
  17.                 byte by[] = new byte[1024];
  18.                 int len=0;
  19.                 while((len=fis.read())!=-1)//这里要把by传给read()啊!!
  20.                 {
  21.                         out.write(by,0,len);
  22.                 }
  23.                 s.shutdownOutput();
  24.                
  25.                 byte b[]=new byte[1024];
  26.                 int num = in.read(b);
  27.                 String str = new String(b,0,num);
  28.                 System.out.println(str);
  29.                
  30.                 fis.close();
  31.                 s.close();
  32.                
  33.                
  34.         }
  35. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马