一、原理
【客户端】读取本地的文件 将文件上传到服务器
【服务器】再把上传的文件保存到服务器的硬盘上
1、客户端使用【本地字节输入流】 读取要上传的文件
2、客户端使用(网络字节输出流) 将读取到的文件上传到服务器
3、服务器使用(网络字节输入流) 读取客户端上传的文件
4、服务器使用【本地字节输出流】 将读取到的文件保存在服务器的硬盘上
5、服务器使用(网络字节输出流) 给客户端回写"上传成功"
6、客户端使用(网络字节输入流) 读取服务器回写的数据
7、释放数据
客户端和服务器对本地硬盘进行读写 使用自己创建的字节流对象(即本地流)
客户端和服务器二者之间进行读写 使用Socket中提供的字节流对象(即网络流)
二、文件上传案例
1、服务端
// 1、创建一个服务器ServiceSocket对象 向系统要指定的端口号
ServerSocket serverSocket=new ServerSocket(8888);
// 2、使用ServerSocket对象中的accept()方法 获取请求的客户端Socket对象
Socket socket=serverSocket.accept();
// 3、使用Socket对象中的getInputStream()方法 获取到网络字节输入流InputStream对象
InputStream inputStream=socket.getInputStream();
// 4、判断E:\\upload文件夹(目标文件夹)是否存在 若不存在则创建
File file=new File("E:\\upload");
if (!file.exists())
{
// mkdirs()方法:可建立多级文件夹
file.mkdirs();
}
// 5、创建一个本地字节输出流FileOutputStream对象 构造方法中绑定要输出的目的地
FileOutputStream fileOutputStream=new FileOutputStream(file+"\\test.jpg");
// 6、使用网络字节输入流InputStream对象中的read()方法 读取客户端上传的文件
int len=0;
byte[] bytes=new