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

java使用http實現(xiàn)文件下載學(xué)習(xí)示例

 更新時間:2014年04月13日 09:08:30   作者:  
這篇文章主要介紹了java使用http實現(xiàn)文件下載學(xué)習(xí)示例,需要的朋友可以參考下

復(fù)制代碼 代碼如下:

package com.hongyuan.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLDecoder;

public class FileDownload {

 public static final String LOCAL_PATH="d:/";

 public static void main(String[] args) {
  //待下載文件地址
  String fileUrl="http://211.162.55.16/cdn.baidupcs.com/file/6a73dab7c03023a9835cc737f447674d?xcode=af6ffdc43a44169bac968d32c4bd420084a9a97c308112c9&fid=3255571826-250528-130564002&time=1397293108&sign=FDTAXER-DCb740ccc5511e5e8fedcff06b081203-mQkOeRDtXpyQWwYJkI%2BxKJpxn5k%3D&to=cb&fm=N,B,U,nc&newver=1&expires=1397297563&rt=sh&r=854979042&logid=1751715936&sh=1&vuk=3255571826&fn=Web%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%20%E7%AC%AC5%E7%89%88.pdf&wshc_tag=0&wsiphost=ipdbm";
  InputStream in=null;
  OutputStream out=null;
  HttpURLConnection conn=null;
  String fileName=null;
  try {
   //初始化連接
   URL url=new URL(fileUrl);
   conn = (HttpURLConnection) url.openConnection();
   conn.setDoInput(true);
   conn.setDoOutput(true);

   //獲取文件名
   String disposition=conn.getHeaderField("Content-Disposition");
   if(disposition!=null&&!"".equals(disposition)){
    //從頭中獲取文件名
    fileName=disposition.split(";")[1].split("=")[1].replaceAll("\"","");
   }else{
    //從地址中獲取文件名
    fileName=fileUrl.substring(fileUrl.lastIndexOf("/")+1);
   }

   if(fileName!=null&&!"".equals(fileName)){
    //文件名解碼
    fileName=URLDecoder.decode(fileName, "utf-8");
   }else{
    //如果無法獲取文件名,則隨機(jī)生成一個
    fileName="file_"+(int)(Math.random()*10);
   }

   //讀取數(shù)據(jù)
   if(conn.getResponseCode()==HttpURLConnection.HTTP_OK){
    byte[] buffer=new byte[2048];
    in = conn.getInputStream();
    out=new FileOutputStream(new File(LOCAL_PATH,fileName));
    int count=0;
    int finished=0;
    int size=conn.getContentLength();
    while((count=in.read(buffer))!=-1){
     if(count!=0){
      out.write(buffer,0,count);
      finished+=count;
      System.out.printf("########################################---->%1$.2f%%\n",(double)finished/size*100);
     }else{
      break;
     }
    }
   }
  } catch (MalformedURLException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   try {
    out.close();
    in.close();
    conn.disconnect();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }
}

相關(guān)文章

  • Callable實現(xiàn)多線程步驟詳解

    Callable實現(xiàn)多線程步驟詳解

    這篇文章主要介紹了Callable實現(xiàn)多線程步驟詳解,Callable是一個接口,用于實現(xiàn)多線程,與實現(xiàn)Runnable類似,但是功能更強(qiáng)大,該方法可以在任務(wù)結(jié)束后提供一個返回值,需要的朋友可以參考下
    2023-10-10
  • SpringBoot如何優(yōu)雅地處理全局異常詳解

    SpringBoot如何優(yōu)雅地處理全局異常詳解

    這篇文章主要給大家介紹了關(guān)于SpringBoot如何優(yōu)雅地處理全局異常的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SpringBoot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java中的Native關(guān)鍵字講解

    Java中的Native關(guān)鍵字講解

    本文介紹了Java中的Native關(guān)鍵字,native關(guān)鍵字是架起本機(jī)語言和JAVA之間鴻溝的橋梁。如果我們的軟件與硬件的交互在使用預(yù)先存在的代碼時更有效,那么這可以作為一個關(guān)鍵環(huán)節(jié)。與從頭開始設(shè)計新的應(yīng)用程序代碼相比,只要可以避免,它就可以使實現(xiàn)工作更少,下面來了解集體內(nèi)容
    2021-12-12
  • Linux下Java Python啟動管理腳本方便程序管理

    Linux下Java Python啟動管理腳本方便程序管理

    這篇文章主要為大家介紹了Linux下Java/Python啟動管理腳本方便程序管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 使用spring-boot-admin對spring-boot服務(wù)進(jìn)行監(jiān)控的實現(xiàn)方法

    使用spring-boot-admin對spring-boot服務(wù)進(jìn)行監(jiān)控的實現(xiàn)方法

    這篇文章主要介紹了使用spring-boot-admin對spring-boot服務(wù)進(jìn)行監(jiān)控的實現(xiàn)方法,需要的朋友可以參考下
    2018-02-02
  • Spring注解驅(qū)動開發(fā)實現(xiàn)屬性賦值

    Spring注解驅(qū)動開發(fā)實現(xiàn)屬性賦值

    這篇文章主要介紹了Spring注解驅(qū)動開發(fā)實現(xiàn)屬性賦值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java中打jar包以及如何調(diào)用包方法演示

    Java中打jar包以及如何調(diào)用包方法演示

    這篇文章主要給大家介紹了關(guān)于Java中打jar包以及如何調(diào)用包的相關(guān)資料,jar包的全稱是java archive,jar包本質(zhì)就是一種壓縮包,在Java開發(fā)中一般是用來壓縮類的一個包,需要的朋友可以參考下
    2023-09-09
  • MyBatis中的collection兩種使用方法及效率比較

    MyBatis中的collection兩種使用方法及效率比較

    collection主要是應(yīng)對表關(guān)系是一對多的情況,本文主要介紹了MyBatis中的collection兩種使用方法及效率比較,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 兩種Eclipse部署動態(tài)web項目方法

    兩種Eclipse部署動態(tài)web項目方法

    這篇文章主要介紹了兩種Eclipse部署動態(tài)web項目方法,需要的朋友可以參考下
    2015-11-11
  • Mybatis 一對多和多對一關(guān)聯(lián)查詢問題

    Mybatis 一對多和多對一關(guān)聯(lián)查詢問題

    這篇文章主要介紹了Mybatis 一對多和多對一關(guān)聯(lián)查詢問題,需要的朋友可以參考下
    2017-04-04

最新評論