Java基于BIO实现文件上传功能

 更新时间:2021年11月24日 08:32   作者:林夕$相心
这篇文章主要为大家详细介绍了Java基于BIO实现文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java基于BIO实现文件上传功能的具体代码,供大家参考,具体内容如下

客户端

package com.qst.file;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

public class Client {

 public static void main(String[] args) {
  try {
   // 获取输入流
   FileInputStream stream = new FileInputStream("E:\\Java后端开发之路\\IO\\讲义\\a.txt");
   
   // 请求与服务端进行建立连接
   Socket socket = new Socket("127.0.0.1", 9999);
   
   // 字节输出流包装成一个数据输出流
   DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
   
   outputStream.writeUTF(".txt");
   int len;
   byte[] b = new byte[1024];
   while ((len = stream.read(b)) > 0) {
    outputStream.write(b, 0, len);
   }
   outputStream.flush();
   
   
   // 通知服务端这边的数据发送完毕了
   socket.shutdownOutput();
  } catch (Exception e) {
   // TODO: handle exception
  }

 }

}

服务端

package com.qst.file;

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

public class Server {

 public static void main(String[] args) throws IOException {
  
  // 建立服务器
  ServerSocket socket = new ServerSocket(9999);
  
  
  Socket accept = socket.accept();
  // 交给一个独立的线程来处理与这个客户端的文件通信需求。
  new ServerThread(accept).start();
 }
}

服务端线程处理

package com.qst.file;

import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.UUID;

public class ServerThread extends Thread{
 
 
 private Socket socket;
 
 public ServerThread(Socket accept) {
  this.socket = accept;
 }

 @Override
 public void run() {
  
  try {
   
   // 得到一个数据输入流读取客户端发送过来的数据
   DataInputStream stream = new DataInputStream(socket.getInputStream());
   
    // 读取客户端发送过来的文件类型
            String suffix = stream.readUTF();
            System.out.println("服务端已经成功接收到了文件类型:" + suffix);
            
            // 定义一个字节输出管道负责把客户端发来的文件数据写出去
   FileOutputStream stream2 = new FileOutputStream("E:\\Java后端开发之路\\IO\\讲义\\b.txt"+UUID.randomUUID().toString()+suffix);
   // 从数据输入流中读取文件数据,写出到字节输出流中去
   byte []  b= new byte[1024];
   
   int len;
   while((len = stream.read(b)) > 0) {
    stream2.write(b, 0, len);
   }
   System.out.println("操作完毕");
   stream2.close();
   stream.close();
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。

原文出处:https://tanghao.blog.csdn.net/article/details/115599289

相关文章

  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • jQuery实现简单的文件上传进度条效果

    本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24
  • 适用于初学者的简易PHP文件上传类

    本文实例讲述了PHP多文件上传类,分享给大家供大家参考。具体如下:<&#63;phpclass Test_Upload{ protected $_uploaded = array(); protected $_destination; protected $_max = 1024000; protected $_messages =...2015-10-30
  • Java如何发起http请求的实现(GET/POST)

    这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
  • PHP利用APC模块实现大文件上传进度条的方法

    php 大文件带进度的上传,一直是一个令php程序员很苦恼的问题。查询baidu 、Google ,大体做带进度的上传方式为:flash+php,socket,apc+php等,下面我介绍了apc +php+ajax制作的带进度的上传,并贴出源码,希望对大家有用。 Altern...2015-10-30
  • 在java中获取List集合中最大的日期时间操作

    这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • Java中 % 与Math.floorMod() 区别详解

    这篇文章主要介绍了Java中 % 与Math.floorMod() 区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-20
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • php需登录的文件上传管理系统

    本文给大家介绍一个不错的需要登录的php 文件上传管理系统,功能简单有需要了解的同学可参考。 代码如下<&#63;php$admin_pw="admin";//管理密码$uploaddir="upload";//上传目录session_start();if($_GET['action']=="g...2015-10-30
  • java 判断两个时间段是否重叠的案例

    这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • 解决Java处理HTTP请求超时的问题

    这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
  • PHP文件上传主要代码讲解

    复制代码 代码如下:<?php if($_FILES['myfile']['name'] != '') { if($_FILES['myfile']['error'] > 0) { echo "错误状态:" . $_FILES['myfile']['error']; } else { move_uploaded_f...2013-10-04
  • 浅谈Java与C#的一些细微差别

    说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
  • java代码获取jenkins数据,构建历史等信息方式

    这篇文章主要介绍了java代码获取jenkins数据,构建历史等信息方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-05-12
  • Java数据结构之哈夫曼树概述及实现

    文中详细讲了关于Java哈夫曼树的概述以及用Java实现的方法,对各位正在学习java数据结构的小伙伴们有很大的帮助哟,需要的朋友可以参考下...2021-05-14
  • Java连接数据库oracle中文乱码解决方案

    这篇文章主要介绍了Java连接数据库oracle中文乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-16
  • Java匿名内部类的写法示例

    这篇文章主要给大家介绍了关于Java匿名内部类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-31
  • Java面试题冲刺第十五天--设计模式

    这篇文章主要为大家分享了最有价值的三道关于设计模式的面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参考一下...2021-08-07