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

Java下http下載文件客戶端和上傳文件客戶端實(shí)例代碼

 更新時(shí)間:2017年12月01日 11:34:03   作者:chenyulancn  
這篇文章主要介紹了Java下http下載文件客戶端和上傳文件客戶端實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

一、下載客戶端代碼

package javadownload; 
import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.net.HttpURLConnection; 
import java.net.URL; 
/** 
 * @說明 導(dǎo)出虛擬機(jī) 
 * @author wxt 
 * @version 1.0 
 * @since 
 */ 
public class GetVM { 
  /** 
   * 測(cè)試 
   * @param args 
   */ 
  public static void main(String[] args) { 
    String url = "http://192.168.5.102:8845/xx"; 
    byte[] btImg = getVMFromNetByUrl(url); 
    if(null != btImg && btImg.length > 0){ 
      System.out.println("讀取到:" + btImg.length + " 字節(jié)"); 
      String fileName = "ygserver"; 
      writeImageToDisk(btImg, fileName); 
    }else{ 
      System.out.println("沒有從該連接獲得內(nèi)容"); 
    } 
  } 
  /** 
   * 將vm 寫入到磁盤 
   * @param vm 數(shù)據(jù)流 
   * @param fileName 文件保存時(shí)的名稱 
   */ 
  public static void writeImageToDisk(byte[] vm, String fileName){ 
    try { 
      File file = new File("./" + fileName); 
      FileOutputStream fops = new FileOutputStream(file); 
      fops.write(vm); 
      fops.flush(); 
      fops.close(); 
      System.out.println("下載完成"); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
  } 
  /** 
   * 根據(jù)地址獲得數(shù)據(jù)的字節(jié)流 
   * @param strUrl 網(wǎng)絡(luò)連接地址 
   * @return 
   */ 
  public static byte[] getVMFromNetByUrl(String strUrl){ 
    try { 
      URL url = new URL(strUrl); 
      HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 
      conn.setRequestMethod("GET"); 
      conn.setConnectTimeout(5 * 1000); 
      InputStream inStream = conn.getInputStream();//通過輸入流獲取數(shù)據(jù) 
      byte[] btImg = readInputStream(inStream);//得到的二進(jìn)制數(shù)據(jù) 
      return btImg; 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
    return null; 
  } 
  /** 
   * 從輸入流中獲取數(shù)據(jù) 
   * @param inStream 輸入流 
   * @return 
   * @throws Exception 
   */ 
  public static byte[] readInputStream(InputStream inStream) throws Exception{ 
    ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 
    byte[] buffer = new byte[1024]; 
    int len = 0; 
    while( (len=inStream.read(buffer)) != -1 ){ 
      outStream.write(buffer, 0, len); 
    } 
    inStream.close(); 
    return outStream.toByteArray(); 
  } 
} 

上述代碼只適合下載小文件,如果下載大文件則會(huì)出現(xiàn)  Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 錯(cuò)誤,所以如果下載大文件需要對(duì)上述代碼進(jìn)行改造,代碼如下:

package javadownload; 
import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.net.HttpURLConnection; 
import java.net.URL; 
/** 
 * @說明 導(dǎo)出虛擬機(jī) 
 * @author wxt 
 * @version 1.0 
 * @since 
 */ 
public class GetBigFile { 
  /** 
   * 測(cè)試 
   * @param args 
   */ 
  public static void main(String[] args) { 
    String url = "http://192.168.5.76:8080/export?uuid=123"; 
    String fileName="yserver";  
    getVMFromNetByUrl(url,fileName); 
  } 
  /** 
   * 根據(jù)地址獲下載文件 
   * @param strUrl 網(wǎng)絡(luò)連接地址 
   * @param fileName 下載文件的存儲(chǔ)名稱 
   */ 
  public static void getVMFromNetByUrl(String strUrl,String fileName){ 
    try { 
      URL url = new URL(strUrl); 
      HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 
      conn.setRequestMethod("GET"); 
      conn.setConnectTimeout(5 * 1000); 
      InputStream inStream = conn.getInputStream();//通過輸入流獲取數(shù)據(jù) 
      byte[] buffer = new byte[4096]; 
      int len = 0; 
      File file = new File("./" + fileName); 
      FileOutputStream fops = new FileOutputStream(file); 
      while( (len=inStream.read(buffer)) != -1 ){ 
        fops.write(buffer, 0, len); 
      } 
      fops.flush(); 
      fops.close();   
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
  } 
} 

二、上傳文件客戶端:

package javadownload; 
import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.net.HttpURLConnection; 
import java.net.URL; 
public class FileUpload { 
  /** 
   * 發(fā)送請(qǐng)求 
   * 
   * @param url 
   *      請(qǐng)求地址 
   * @param filePath 
   *      文件在服務(wù)器保存路徑(這里是為了自己測(cè)試方便而寫,可以將該參數(shù)去掉) 
   * @return 
   * @throws IOException 
   */ 
  public int send(String url, String filePath) throws IOException { 
    File file = new File(filePath); 
    if (!file.exists() || !file.isFile()) { 
      return -1; 
    } 
    /** 
     * 第一部分 
     */ 
    URL urlObj = new URL(url); 
    HttpURLConnection con = (HttpURLConnection) urlObj.openConnection(); 
    /** 
     * 設(shè)置關(guān)鍵值 
     */ 
    con.setRequestMethod("POST"); // 以Post方式提交表單,默認(rèn)get方式 
    con.setDoInput(true); 
    con.setDoOutput(true); 
    con.setUseCaches(false); // post方式不能使用緩存 
    // 設(shè)置請(qǐng)求頭信息 
    con.setRequestProperty("Connection", "close");//Keep-Alive 
    con.setRequestProperty("Charset", "UTF-8"); 
    // 設(shè)置邊界 
    String BOUNDARY = "----------" + System.currentTimeMillis(); 
    con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" 
        + BOUNDARY); 
    // 請(qǐng)求正文信息 
    // 第一部分: 
    StringBuilder sb = new StringBuilder(); 
    sb.append("--"); // ////////必須多兩道線 
    sb.append(BOUNDARY); 
    sb.append("\r\n"); 
    sb.append("Content-Disposition: form-data;name=\"file_name\";filename=\"" 
        + file.getName() + "\"\r\n"); 
    sb.append("Content-Type:application/octet-stream\r\n\r\n"); 
    sb.append("Connection:close\r\n\r\n"); 
    byte[] head = sb.toString().getBytes("utf-8"); 
    // 獲得輸出流 
    OutputStream out = new DataOutputStream(con.getOutputStream()); 
    out.write(head); 
    // 文件正文部分 
    DataInputStream in = new DataInputStream(new FileInputStream(file)); 
    int bytes = 0; 
    byte[] bufferOut = new byte[1024]; 
    while ((bytes = in.read(bufferOut)) != -1) { 
      out.write(bufferOut, 0, bytes); 
    } 
    in.close(); 
    // 結(jié)尾部分 
    byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定義最后數(shù)據(jù)分隔線 
    out.write(foot); 
    out.flush(); 
    out.close(); 
    /** 
     * 讀取服務(wù)器響應(yīng),必須讀取,否則提交不成功 
     */ 
    return con.getResponseCode(); 
    /** 
     * 下面的方式讀取也是可以的 
     */ 
    // try { 
    // // 定義BufferedReader輸入流來讀取URL的響應(yīng) 
    // BufferedReader reader = new BufferedReader(new InputStreamReader( 
    // con.getInputStream())); 
    // String line = null; 
    // while ((line = reader.readLine()) != null) { 
    // System.out.println(line); 
    // } 
    // } catch (Exception e) { 
    // System.out.println("發(fā)送POST請(qǐng)求出現(xiàn)異常!" + e); 
    // e.printStackTrace(); 
    // } 
  } 
  public static void main(String[] args) throws IOException { 
    FileUpload up = new FileUpload(); 
    System.out.println(up.send("http://192.168.5.102:8845/xx", 
        "./vif.xml")); 
    ; 
  } 
} 

總結(jié)

以上所述是小編給大家介紹的Java下http下載文件客戶端和上傳文件客戶端實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 詳解Java中的阻塞隊(duì)列

    詳解Java中的阻塞隊(duì)列

    在去年的面試過程中,被面試官問道“阻塞隊(duì)列”這個(gè)問題,因?yàn)楫?dāng)時(shí)并沒有對(duì)此問題進(jìn)行深入理解,只是按照自己的理解說明了該問題,最后面試結(jié)果也不太好,今天對(duì)該問題進(jìn)行簡(jiǎn)要的面試并記錄如下;如有錯(cuò)誤,歡迎指正,需要的朋友可以參考下
    2021-06-06
  • 基于Spring Data Jest的Elasticsearch數(shù)據(jù)統(tǒng)計(jì)示例

    基于Spring Data Jest的Elasticsearch數(shù)據(jù)統(tǒng)計(jì)示例

    本篇文章主要介紹了基于Spring Data Jest的Elasticsearch數(shù)據(jù)統(tǒng)計(jì)示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • mybatis中的字符串拼接問題

    mybatis中的字符串拼接問題

    這篇文章主要介紹了mybatis中的字符串拼接問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Spring @Transaction 注解執(zhí)行事務(wù)的流程

    Spring @Transaction 注解執(zhí)行事務(wù)的流程

    這篇文章主要介紹了Spring @Transaction 注解執(zhí)行事務(wù)的流程,Spring 是如何開啟事務(wù)的?又是如何進(jìn)行提交事務(wù)和關(guān)閉事務(wù)的,本文給大家詳細(xì)介紹,需要的朋友可以參考下
    2021-06-06
  • Java經(jīng)典排序算法之二分插入排序詳解

    Java經(jīng)典排序算法之二分插入排序詳解

    這篇文章主要為大家詳細(xì)介紹了Java經(jīng)典排序算法之二分插入排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 解決

    解決"XML Parser Error on line 1: 前言中不允許有內(nèi)容"錯(cuò)誤

    解決用windows自帶的記事編輯xml文件后出現(xiàn) "XML Parser Error on line 1: 前言中不允許有內(nèi)容。"的錯(cuò)誤
    2018-02-02
  • Java循環(huán)對(duì)bean的屬性進(jìn)行賦值的實(shí)現(xiàn)

    Java循環(huán)對(duì)bean的屬性進(jìn)行賦值的實(shí)現(xiàn)

    本文主要介紹了Java循環(huán)對(duì)bean的屬性進(jìn)行賦值,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java實(shí)現(xiàn)發(fā)紅包功能

    Java實(shí)現(xiàn)發(fā)紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)發(fā)紅包功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 詳解SpringMVC的攔截器參數(shù)及攔截器鏈配置

    詳解SpringMVC的攔截器參數(shù)及攔截器鏈配置

    攔截器(Interceptor)是一種動(dòng)態(tài)攔截方法調(diào)用的機(jī)制,在SpringMVC中動(dòng)態(tài)攔截控制器方法的執(zhí)行。本文將詳細(xì)講講SpringMVC中攔截器參數(shù)及攔截器鏈配置,感興趣的可以嘗試一下
    2022-07-07
  • Java內(nèi)存管理垃圾回收基礎(chǔ)詳解

    Java內(nèi)存管理垃圾回收基礎(chǔ)詳解

    這篇文章主要為大家介紹了Java內(nèi)存管理垃圾回收基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評(píng)論

安吉县| 吉木萨尔县| 葫芦岛市| 启东市| 西乡县| 德昌县| 汾阳市| 宿州市| 驻马店市| 稻城县| 吴川市| 渭源县| 吴桥县| 常熟市| 汽车| 玉田县| 额敏县| 基隆市| 西城区| 嵩明县| 高州市| 颍上县| 山东| 安塞县| 彝良县| 烟台市| 湖北省| 象山县| 手游| 咸丰县| 葫芦岛市| 班戈县| 白山市| 女性| 枣庄市| 建宁县| 青川县| 通辽市| 广州市| 久治县| 抚松县|