最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的文件上傳案例示例代碼

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

Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的文件上傳案例

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

下面上代碼

上傳單個(gè)文件

服務(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ù)器端啟動(dòng)");
  //創(chuàng)建一個(gè)服務(wù)器端對(duì)象
  ServerSocket serverSocket = new ServerSocket(8888);
  //使用accept獲取socket對(duì)象
  Socket accept = serverSocket.accept();
  //使用字節(jié)輸入流讀取
  InputStream inputStream = accept.getInputStream();
  //創(chuàng)建一個(gè)字節(jié)輸出流輸出到本地
  FileOutputStream fileOutputStream = new FileOutputStream("F:\\this\\copy1.jpg",true);
  //創(chuàng)建一個(gè)數(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)建一個(gè)Socket對(duì)象
  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();
  }
  //由于不會(huì)寫入-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)建一個(gè)Socket對(duì)象
  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();
  }
  //由于不會(huì)寫入-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ù)器端啟動(dòng)");
  //創(chuàng)建一個(gè)服務(wù)器端對(duì)象
  ServerSocket serverSocket = new ServerSocket(8888);
  //使用while()持續(xù)寫入數(shù)據(jù)
  while(true){
   //使用accept獲取socket對(duì)象
   Socket accept = serverSocket.accept();
   //Socket對(duì)象交給子線程處理,進(jìn)行讀寫操作,
   new Thread(() ->{
    {
     //使用字節(jié)輸入流讀取
     InputStream inputStream = null;
     try {
      //文件名
      String name = new String("F:\\this\\"+ System.currentTimeMillis()+"copy1.jpg" );
      inputStream = accept.getInputStream();
      //創(chuàng)建一個(gè)字節(jié)輸出流輸出到本地
      FileOutputStream fileOutputStream = new FileOutputStream(name,true);
      //創(chuàng)建一個(gè)數(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)輸入無(wú)非就是增加了一個(gè)while循環(huán)與一點(diǎn)多線程的知識(shí),以上就是一個(gè)文件上傳的一個(gè)簡(jiǎn)單案例,

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

相關(guān)文章

  • java abstract class interface之間的區(qū)別介紹

    java abstract class interface之間的區(qū)別介紹

    含有abstract修飾符的class即為抽象類,abstract 類不能創(chuàng)建的實(shí)例對(duì)象,abstract class類中定義抽象方法必須在具體(Concrete)子類中實(shí)現(xiàn),所以,不能有抽象構(gòu)造方法或抽象靜態(tài)方法
    2012-11-11
  • springboot 獲取工具類bean過(guò)程詳解

    springboot 獲取工具類bean過(guò)程詳解

    這篇文章主要介紹了springboot 獲取工具類bean過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 開源的Java圖片處理庫(kù)實(shí)例詳解

    開源的Java圖片處理庫(kù)實(shí)例詳解

    Java?圖片處理庫(kù)提供了豐富的功能,用于處理和增強(qiáng)圖像,在Java生態(tài)系統(tǒng)中,有幾個(gè)流行的開源庫(kù)可以用于圖片處理,這些庫(kù)提供了豐富的功能,如圖像縮放、裁剪、顏色調(diào)整、格式轉(zhuǎn)換等,本文介紹開源的Java圖片處理庫(kù)介紹,感興趣的朋友一起看看吧
    2024-03-03
  • MyBatis配置文件元素示例詳解

    MyBatis配置文件元素示例詳解

    在MyBatis框架的核心配置文件中,<configuration>元素是配置文件的根元素,其他元素都要在<contiguration>元素內(nèi)配置,這篇文章主要介紹了MyBatis配置文件元素,需要的朋友可以參考下
    2023-06-06
  • 關(guān)于mybatis遇到Integer類型的參數(shù)時(shí)動(dòng)態(tài)sql需要注意條件

    關(guān)于mybatis遇到Integer類型的參數(shù)時(shí)動(dòng)態(tài)sql需要注意條件

    這篇文章主要介紹了關(guān)于mybatis遇到Integer類型的參數(shù)時(shí)動(dòng)態(tài)sql需要注意條件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java拆裝箱深度剖析

    Java拆裝箱深度剖析

    這篇文章主要為大家深度剖析了Java拆箱裝箱的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 使用jmx?exporter采集kafka指標(biāo)示例詳解

    使用jmx?exporter采集kafka指標(biāo)示例詳解

    這篇文章主要為大家介紹了使用jmx?exporter采集kafka指標(biāo)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 使用?mybatis?自定義日期類型轉(zhuǎn)換器的示例代碼

    使用?mybatis?自定義日期類型轉(zhuǎn)換器的示例代碼

    這篇文章主要介紹了使用?mybatis?自定義日期類型轉(zhuǎn)換器的示例代碼,這里使用mybatis中的typeHandlers?實(shí)現(xiàn)的,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • SpringMVC運(yùn)行時(shí)出現(xiàn)404錯(cuò)誤的解決辦法匯總(基本包含所有錯(cuò)誤可能)

    SpringMVC運(yùn)行時(shí)出現(xiàn)404錯(cuò)誤的解決辦法匯總(基本包含所有錯(cuò)誤可能)

    初學(xué)SpringMVC基本都會(huì)碰到404問(wèn)題(確實(shí)也困擾了我好長(zhǎng)時(shí)間),但出現(xiàn)404問(wèn)題的原因有很多,如果確認(rèn)路徑,代碼沒(méi)問(wèn)題,并且服務(wù)器可以正常啟動(dòng),依然出現(xiàn)404問(wèn)題的話,就根據(jù)本篇步驟逐一排查,需要的朋友可以參考下
    2024-04-04
  • Springboot Activemq整合過(guò)程代碼圖解

    Springboot Activemq整合過(guò)程代碼圖解

    這篇文章主要介紹了Springboot Activemq整合過(guò)程代碼圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

镇平县| 长沙市| 灵武市| 江阴市| 乌海市| 江安县| 万荣县| 潮安县| 融水| 额济纳旗| 拉孜县| 准格尔旗| 贞丰县| 汉源县| 武功县| 泽普县| 玉田县| 香港| 桦甸市| 莆田市| 赤城县| 潞城市| 丽水市| 抚松县| 荥经县| 新源县| 柳州市| 庆元县| 车致| 潜山县| 尚志市| 襄城县| 甘德县| 天气| 静海县| 盐山县| 五华县| 资源县| 新龙县| 遂川县| 广宗县|