Java网络通信Part3:文件的上传及优化【完结】

本文详细介绍了Java实现文件上传的原理,包括客户端如何通过本地字节输入流读取文件,通过网络字节输出流向服务器上传,以及服务器如何接收并保存文件。此外,还讨论了文件上传过程中的优化策略,如避免文件覆盖、保持服务器监听状态以便连续上传和利用多线程提高上传效率。
摘要由CSDN通过智能技术生成

一、原理

【客户端】读取本地的文件 将文件上传到服务器
【服务器】再把上传的文件保存到服务器的硬盘上

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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值