欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-15 18:49:23
本文实例为大家分享了java基于bio实现文件上传功能的具体代码,供大家参考,具体内容如下客户端package com.qst.file;import java.io.bufferedinputstr...

本文实例为大家分享了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基于BIO实现文件上传功能

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