Java基于BIO實現(xiàn)文件上傳功能
更新時間:2021年11月23日 16:41:04 作者:林夕$相心
這篇文章主要為大家詳細介紹了Java基于BIO實現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Java基于BIO實現(xiàn)文件上傳功能的具體代碼,供大家參考,具體內(nèi)容如下
客戶端
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后端開發(fā)之路\\IO\\講義\\a.txt");
// 請求與服務端進行建立連接
Socket socket = new Socket("127.0.0.1", 9999);
// 字節(jié)輸出流包裝成一個數(shù)據(jù)輸出流
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();
// 通知服務端這邊的數(shù)據(jù)發(fā)送完畢了
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 {
// 得到一個數(shù)據(jù)輸入流讀取客戶端發(fā)送過來的數(shù)據(jù)
DataInputStream stream = new DataInputStream(socket.getInputStream());
// 讀取客戶端發(fā)送過來的文件類型
String suffix = stream.readUTF();
System.out.println("服務端已經(jīng)成功接收到了文件類型:" + suffix);
// 定義一個字節(jié)輸出管道負責把客戶端發(fā)來的文件數(shù)據(jù)寫出去
FileOutputStream stream2 = new FileOutputStream("E:\\Java后端開發(fā)之路\\IO\\講義\\b.txt"+UUID.randomUUID().toString()+suffix);
// 從數(shù)據(jù)輸入流中讀取文件數(shù)據(jù),寫出到字節(jié)輸出流中去
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();
}
}
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java BeanMap實現(xiàn)Bean與Map的相互轉(zhuǎn)換
這篇文章主要介紹了利用BeanMap進行對象與Map的相互轉(zhuǎn)換,通過net.sf.cglib.beans.BeanMap類中的方法來轉(zhuǎn)換,效率極高,本文給大家分享實現(xiàn)代碼,感興趣的朋友一起看看吧2022-11-11
Java實現(xiàn)兩人五子棋游戲(五) 判斷是否有一方勝出
這篇文章主要為大家詳細介紹了Java實現(xiàn)兩人五子棋游戲,判斷是否有一方勝出,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
Java獲取XML節(jié)點總結(jié)之讀取XML文檔節(jié)點的方法
下面小編就為大家?guī)硪黄狫ava獲取XML節(jié)點總結(jié)之讀取XML文檔節(jié)點的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
如何使用axis調(diào)用WebService及Java?WebService調(diào)用工具類
Axis是一個基于Java的Web服務框架,可以用來調(diào)用Web服務接口,下面這篇文章主要給大家介紹了關于如何使用axis調(diào)用WebService及Java?WebService調(diào)用工具類的相關資料,需要的朋友可以參考下2023-04-04

