java小练习之文件迁移(文件上传)
程序员文章站
2022-07-10 12:17:28
...
- 需求:
- 从客户端发送文件到服务端,服务端接收后返回一个成功接收的信息
- 服务端能接收多个客户端发送文件
- 具体代码实现
- 客户端程序:
public static void main(String[] args) throws IOException {
//本地输入流,用来读取文件数据
FileInputStream fis = new FileInputStream("E://1.jpg");
//新建客户端对象,传入服务器端的ip地址和端口
//将此处ip修改为另一台电脑ip,然后在另一台电脑执行服务端程序即可实现两台电脑之间的文件传输
Socket socket = new Socket("127.0.0.1",8888);
//得到网络输出流,用于处理网络传输中的数据流
OutputStream os = socket.getOutputStream();
//读取数据并传输
int len = 0;
byte[] b = new byte[1024];
while ((len=fis.read(b)) != -1){
os.write(b,0,len);
}
//结束传输,因为os没法传输文件终止标记
socket.shutdownOutput();
//得到网络输入流,用于读取服务端返回的数据
InputStream is = socket.getInputStream();
//读取返回的数据并输出
while((len = is.read(b)) != -1){
System.out.println(new String(b,0,len));
}
//释放资源
fis.close();
socket.close();
}
- 服务端程序
public static void main(String[] args) throws IOException {
//新建服务端对象,并绑定指定端口
ServerSocket server = new ServerSocket(8888);
//一直监听客户端,上传一次文件就保存一个文件
while (true){
//因为要使用客户端的网络输入输出流,故先得到客户端对象
Socket socket = server.accept();
//开启多线程,这样子每读取一个文件并保存就是一个线程,提高效率
new Thread(new Runnable() {
@Override
public void run() {
try {
//得到网络输入流,用于读取客户端传输的数据
InputStream is = socket.getInputStream();
//把数据保存成文件并放在一个文件夹下
File file = new File("E://upload");
//判断是否存在该文件夹,没有则创建
if(!file.exists()){
file.mkdirs();
}
//自定义文件名命名规则:picture+当前毫秒值+随机数
String fileName = "picture"+System.currentTimeMillis()+new Random().nextInt(9999)+".jpg";
//创建本地输出流,用于把客户端传输的数据写入到文件里
FileOutputStream fos = new FileOutputStream(file+"//"+fileName);
//读取客户端传输的数据并写入文件
int len = 0;
byte[] b = new byte[1024];
while ((len=is.read(b)) != -1){
fos.write(b,0,len);
}
//得到网络输出流,给客户端反馈数据
OutputStream os = socket.getOutputStream();
os.write("成功接收".getBytes());
//释放资源
fos.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
推荐阅读
-
hadoop入门之通过java代码实现将本地文件上传到hadoop的文件系统
-
微信小程序学习笔记之文件上传、下载操作图文详解
-
微信小程序技巧之show内容展示,上传文件编码问题
-
前端笔记之微信小程序(三)GET请求案例&文件上传和相册API&配置https
-
Java文件上传之SpringMVC实例
-
java小练习之文件迁移(文件上传)
-
.NET Core 2.0迁移小技巧之web.config 配置文件示例详解
-
.NET Core 2.0迁移小技巧之web.config 配置文件示例详解
-
微信小程序技巧之show内容展示,上传文件编码问题
-
Java基础知识(JDK、JRE、JVM; 编写java小程序之文件命名、编译javac、运行java)