欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)一個簡單的文件上傳案例示例代碼

 更新時間:2020年07月22日 09:28:56   作者:一只胡說八道的猴子  
這篇文章主要介紹了Java實現(xiàn)一個簡單的文件上傳案例,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Java實現(xiàn)一個簡單的文件上傳案例

實現(xiàn)流程:
1.客戶端從硬盤讀取文件數(shù)據(jù)到程序中
2.客戶端輸出流,寫出文件到服務(wù)端
3.服務(wù)端輸出流,讀取文件數(shù)據(jù)到服務(wù)端中
4.輸出流,寫出文件數(shù)據(jù)到服務(wù)器硬盤中

下面上代碼

上傳單個文件

服務(wù)器端

package FileUpload;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
 public static void main(String[] args) throws IOException {
  System.out.println("服務(wù)器端啟動");
  //創(chuàng)建一個服務(wù)器端對象
  ServerSocket serverSocket = new ServerSocket(8888);
  //使用accept獲取socket對象
  Socket accept = serverSocket.accept();
  //使用字節(jié)輸入流讀取
  InputStream inputStream = accept.getInputStream();
  //創(chuàng)建一個字節(jié)輸出流輸出到本地
  FileOutputStream fileOutputStream = new FileOutputStream("F:\\this\\copy1.jpg",true);
  //創(chuàng)建一個數(shù)組循環(huán)讀取
  byte[] bytes = new byte[1024];
  int len;
  while ((len=inputStream.read(bytes))!=-1){
   fileOutputStream.write(bytes,0,len);
  }
  System.out.println("執(zhí)行完畢");
  fileOutputStream.close();
  inputStream.close();

 }
}

客戶端

package FileUpload;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
 public static void main(String[] args) throws IOException {
  //創(chuàng)建一個Socket對象
  Socket socket = new Socket("127.0.0.1", 8888);
  //讀取本地文件
  FileInputStream fileInputStream = new FileInputStream("F:\\1.jpeg");
  //獲取輸出流向服務(wù)器寫入數(shù)據(jù)
  OutputStream outputStream = socket.getOutputStream();
  //創(chuàng)建數(shù)組讀取
  byte[] bytes = new byte[1024];
  int len;
  //邊都邊寫
  while((len=fileInputStream.read(bytes))!=-1){
   outputStream.write(bytes,0,len);
   outputStream.flush();
  }
  //由于不會寫入-1所以調(diào)用socket的shutdownOutput方法把前面的數(shù)據(jù)都寫入并且正常終止后面的序列
  socket.shutdownOutput();
  System.out.println("文件發(fā)送完畢");
  fileInputStream.close();
  outputStream.close();
  socket.close();
 }
}

循環(huán)上傳

客戶端代碼

package FileUpload;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
 public static void main(String[] args) throws IOException {
  //創(chuàng)建一個Socket對象
  Socket socket = new Socket("127.0.0.1", 8888);
  //讀取本地文件
  FileInputStream fileInputStream = new FileInputStream("F:\\1.jpeg");
  //獲取輸出流向服務(wù)器寫入數(shù)據(jù)
  OutputStream outputStream = socket.getOutputStream();
  //創(chuàng)建數(shù)組讀取
  byte[] bytes = new byte[1024];
  int len;
  //邊都邊寫
  while((len=fileInputStream.read(bytes))!=-1){
   outputStream.write(bytes,0,len);
   outputStream.flush();
  }
  //由于不會寫入-1所以調(diào)用socket的shutdownOutput方法把前面的數(shù)據(jù)都寫入并且正常終止后面的序列
  socket.shutdownOutput();
  System.out.println("文件發(fā)送完畢");
  fileInputStream.close();
  outputStream.close();
  socket.close();
 }
}

服務(wù)器端代碼

package FileUpload;
  import java.io.FileOutputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.net.ServerSocket;
  import java.net.Socket;
public class Server {
 public static void main(String[] args) throws IOException {
  System.out.println("服務(wù)器端啟動");
  //創(chuàng)建一個服務(wù)器端對象
  ServerSocket serverSocket = new ServerSocket(8888);
  //使用while()持續(xù)寫入數(shù)據(jù)
  while(true){
   //使用accept獲取socket對象
   Socket accept = serverSocket.accept();
   //Socket對象交給子線程處理,進行讀寫操作,
   new Thread(() ->{
    {
     //使用字節(jié)輸入流讀取
     InputStream inputStream = null;
     try {
      //文件名
      String name = new String("F:\\this\\"+ System.currentTimeMillis()+"copy1.jpg" );
      inputStream = accept.getInputStream();
      //創(chuàng)建一個字節(jié)輸出流輸出到本地
      FileOutputStream fileOutputStream = new FileOutputStream(name,true);
      //創(chuàng)建一個數(shù)組循環(huán)讀取
      byte[] bytes = new byte[1024];
      int len;
      while ((len=inputStream.read(bytes))!=-1){
       fileOutputStream.write(bytes,0,len);
      }
      System.out.println("執(zhí)行完畢");
      fileOutputStream.close();
      inputStream.close();
     } catch (IOException e) {
      e.printStackTrace();
     }
    }
   }).start();
  }

 }
}

循環(huán)輸入無非就是增加了一個while循環(huán)與一點多線程的知識,以上就是一個文件上傳的一個簡單案例,

到此這篇關(guān)于Java實現(xiàn)一個簡單的文件上傳案例示例代碼的文章就介紹到這了,更多相關(guān)Java實現(xiàn)文件上傳案例內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java多線程中的ThreadPoolExecutor使用解析

    Java多線程中的ThreadPoolExecutor使用解析

    這篇文章主要介紹了Java多線程中的ThreadPoolExecutor使用解析,作為線程池的緩沖,當新增線程超過maximumPoolSize時,會將新增線程暫時存放到該隊列中,需要的朋友可以參考下
    2023-12-12
  • @Async異步線程池以及線程的命名方式

    @Async異步線程池以及線程的命名方式

    這篇文章主要介紹了@Async異步線程池以及線程的命名方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 詳解shrio的認證(登錄)過程

    詳解shrio的認證(登錄)過程

    這篇文章主要介紹了shrio的認證(登錄)過程,幫助大家更好的理解和使用shrio框架,感興趣的朋友可以了解下
    2021-02-02
  • Mybatis-Plus自動生成的數(shù)據(jù)庫id過長的解決

    Mybatis-Plus自動生成的數(shù)據(jù)庫id過長的解決

    這篇文章主要介紹了Mybatis-Plus自動生成的數(shù)據(jù)庫id過長的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 詳解Java實現(xiàn)拓撲排序算法

    詳解Java實現(xiàn)拓撲排序算法

    拓撲排序,很多人都可能聽說但是不了解的一種算法?;蛟S很多人只知道它是圖論的一種排序,至于干什么的不清楚。又或許很多人可能還會認為它是一種啥排序。而實質(zhì)上它是對有向圖的頂點排成一個線性序列
    2021-06-06
  • 簡單談?wù)凧ava遍歷樹深度優(yōu)先和廣度優(yōu)先的操作方式

    簡單談?wù)凧ava遍歷樹深度優(yōu)先和廣度優(yōu)先的操作方式

    這篇文章主要介紹了簡單談?wù)凧ava遍歷樹深度優(yōu)先和廣度優(yōu)先的操作方式的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 入門java的第一步HelloWorld

    入門java的第一步HelloWorld

    這篇文章主要介紹了入門java的第一步-Hello,World,文中通過示例代碼介紹的非常詳細,對大家的java初步學習具有一定的學習價值,需要的朋友可以參考下
    2021-04-04
  • Java多線程編程之Lock用法實例

    Java多線程編程之Lock用法實例

    這篇文章主要介紹了Java多線程編程之Lock用法實例,本文直接給出代碼實例,需要的朋友可以參考下
    2015-05-05
  • mac安裝配置jdk環(huán)境變量

    mac安裝配置jdk環(huán)境變量

    這篇文章主要為大家介紹了mac安裝配置jdk環(huán)境變量實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 關(guān)于java命令的本質(zhì)邏輯揭秘過程

    關(guān)于java命令的本質(zhì)邏輯揭秘過程

    Java是通過java虛擬機來裝載和執(zhí)行編譯文件(class文件)的,java虛擬機通過命令java  option 來啟動,這篇文章主要給大家介紹了關(guān)于java命令的本質(zhì)邏輯揭秘的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-05-05

最新評論