JAVA基础编程101——文件上传

一、技术点:IO流、套接字
二、案例代码

1、客户端

package com.mollen.upload;

import java.io.*;
import java.net.Socket;

/**
* @ClassName:  com.mollen.upload.Client
* @Auther:     Mollen
* @CreateTime: 2018-09-11  08:36:31
* @Description:
*              文件上传客户端
*/
public class Client {
   public static void main(String[] args) throws IOException {
       //1.创建socke对象
       Socket client = new Socket("127.0.0.1",6666);
       //2.创建读入数据流对象
       FileInputStream fis = new FileInputStream("H:\\1001.avi");
       //3.获取写出数据流
       OutputStream os = client.getOutputStream();
       //4.读入客户端本地文件,写出到数据流
       int len = 0;
       byte[] bytes = new byte[10240];
       while((len= fis.read(bytes))!=-1){
           os.write(bytes,0,len);
       }
       //写出结束标志
       client.shutdownOutput();
       
       //读取服务端回执信息
       BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
       System.out.println(br.readLine());

       //释放资源
       fis.close();
       os.close();
       client.close();
   }
}

2、服务端

package com.mollen.upload;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
* @ClassName:  com.mollen.upload.Server
* @Auther:     Mollen
* @CreateTime: 2018-09-11  08:36:53
* @Description:
*              文件上传服务端
*/
public class Server {
   public static void main(String[] args) throws IOException {
       //1.创建serversocket对象
       ServerSocket server = new ServerSocket(6666);
       while(true) {
           //2.监听客户端
           Socket client = server.accept();
           //3.数据源
           InputStream is = client.getInputStream();
           //4.创建数据写出流对象
           FileOutputStream fos = new FileOutputStream("E:\\upload\\" + System.currentTimeMillis() + ".avi");
           //5.读入数据流,写出到服务器本地磁盘
           int len = 0;
           byte[] bytes = new byte[10240];
           while ((len = is.read(bytes)) != -1) {
               fos.write(bytes, 0, len);
           }
           //提示信息
           System.out.println("接受完成!");
           //回执信息
           client.getOutputStream().write("上传成功!".getBytes());
           //释放资源
           is.close();
           fos.close();
           client.close();
       }
   }
}

三、注意事项

1、数据运输路径: 客服端磁盘–>(读入)–>(写出)–>数据流–>(读入)–>(写出)–>客户端磁盘
2、客户端创建Socket,服务端创建ServerSocket
3、数据写出完毕必须有结束标志
4、测试先启动服务端再启动客户端。

猜你喜欢

转载自blog.csdn.net/mollen/article/details/82624367