实现步骤
- 【客户端】输入流,从硬盘读取文件数据到程序中。
- 【客户端】输出流,写出文件数据到服务端。
- 【服务端】输入流,读取文件数据到服务端程序。
- 【服务端】输出流,写出文件数据到服务器硬盘中。
文件上传服务端FileUploadServer:
package com.gem.demo.day0811;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class FileUploadServer {
public static void main(String[] args) throws IOException {
System.out.println("服务器启动...");
//1.创建服务端ss
ServerSocket ss = new ServerSocket(8080);
//2.创建连接
Socket accept = ss.accept();
//3.创建流对象
//获取输入流,读取文件
BufferedInputStream bis = new BufferedInputStream(accept.getInputStream());
//创建输出流,保存文件
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("D:\\Test\\upload.jpg")));
//4.读写文件
byte[] b = new byte[10 * 1024];
int len = -1;
while ((len = bis.read(b)) != -1) {
bos.write(b, 0, len);
bos.flush();
}
//5.关闭资源
bos.close();
bis.close();
accept.close();
System.out.println("文件保存成功!");
}
}
客户端:
package com.gem.demo.day0811;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class FileUploadClient {
public static void main(String[] args) throws UnknownHostException, IOException {
//1.创建流对象
//创建输入流 读取文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\eclipse\\Workspace\\Test\\3.jpg"));
//创建输出流 写到服务端
Socket socket = new Socket("localhost", 8080);
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
//2.读写数据
byte[] b = new byte[10 * 1024];
int len = -1;
while ((len = bis.read(b)) != -1) {
bos.write(b, 0, len);
bos.flush();
}
//3.关闭资源
bos.close();
socket.close();
bis.close();
System.out.println("文件上传成功!");
}
}