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

 更新时间:2021年11月23日 16:41:04   作者:林夕$相心  
这篇文章主要为大家详细介绍了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();
  }
 }

}

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

相关文章

  • Java BeanMap实现Bean与Map的相互转换

    Java BeanMap实现Bean与Map的相互转换

    这篇文章主要介绍了利用BeanMap进行对象与Map的相互转换,通过net.sf.cglib.beans.BeanMap类中的方法来转换,效率极高,本文给大家分享实现代码,感兴趣的朋友一起看看吧
    2022-11-11
  • java -jar/-cp启动添加外部的依赖包方式

    java -jar/-cp启动添加外部的依赖包方式

    这篇文章主要介绍了java -jar/-cp启动添加外部的依赖包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • springboot实现基于aop的切面日志

    springboot实现基于aop的切面日志

    这篇文章主要为大家详细介绍了springboot实现基于aop的切面日志,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • Java内省之Introspector解读

    Java内省之Introspector解读

    这篇文章主要介绍了Java内省之Introspector解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java NIO与IO的区别以及比较

    Java NIO与IO的区别以及比较

    这篇文章主要介绍了Java NIO与IO的区别以及比较,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Java实现两人五子棋游戏(五) 判断是否有一方胜出

    Java实现两人五子棋游戏(五) 判断是否有一方胜出

    这篇文章主要为大家详细介绍了Java实现两人五子棋游戏,判断是否有一方胜出,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Java远程共享目录的操作代码

    Java远程共享目录的操作代码

    这篇文章主要介绍了java操作远程共享目录的实现代码,非常不粗,具有参考借鉴价值,需要的朋友可以参考下
    2017-08-08
  • Java获取XML节点总结之读取XML文档节点的方法

    Java获取XML节点总结之读取XML文档节点的方法

    下面小编就为大家带来一篇Java获取XML节点总结之读取XML文档节点的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • Java多线程面试题之交替输出问题的实现

    Java多线程面试题之交替输出问题的实现

    本文主要介绍了Java多线程面试题之交替输出问题的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 如何使用axis调用WebService及Java WebService调用工具类

    如何使用axis调用WebService及Java WebService调用工具类

    Axis是一个基于Java的Web服务框架,可以用来调用Web服务接口,下面这篇文章主要给大家介绍了关于如何使用axis调用WebService及Java WebService调用工具类的相关资料,需要的朋友可以参考下
    2023-04-04

最新评论