Java從指定URL下載文件並保存到指定目錄

1.基本流程

當咱們想要下載網站上的某個資源時,咱們會獲取一個url,它是服務器定位資源的一個描述,下載的過程有以下幾步:緩存

(1)客戶端發起一個url請求,獲取鏈接對象。服務器

(2)服務器解析url,而且將指定的資源返回一個輸入流給客戶。網絡

(3)創建存儲的目錄以及保存的文件名。post

(4)輸出了寫數據。測試

(5)關閉輸入流和輸出流。網站

2.實現代碼的方法

/**  
 * @從制定URL下載文件並保存到指定目錄
 * @param filePath 文件將要保存的目錄  
 * @param method 請求方法,包括POST和GET  
 * @param url 請求的路徑  
 * @return  
 */  
  
public static File saveUrlAs(String url,String filePath,String method){  
     //System.out.println("fileName---->"+filePath);  
     //建立不一樣的文件夾目錄  
     File file=new File(filePath);  
     //判斷文件夾是否存在  
     if (!file.exists())  
     {  
        //若是文件夾不存在,則建立新的的文件夾  
         file.mkdirs();  
     }  
     FileOutputStream fileOut = null;  
     HttpURLConnection conn = null;  
     InputStream inputStream = null;  
     try  
     {  
         // 創建連接  
         URL httpUrl=new URL(url);  
         conn=(HttpURLConnection) httpUrl.openConnection();  
         //以Post方式提交表單,默認get方式  
         conn.setRequestMethod(method);  
         conn.setDoInput(true);    
         conn.setDoOutput(true);  
         // post方式不能使用緩存   
         conn.setUseCaches(false);  
         //鏈接指定的資源   
         conn.connect();  
         //獲取網絡輸入流  
         inputStream=conn.getInputStream();  
         BufferedInputStream bis = new BufferedInputStream(inputStream);  
         //判斷文件的保存路徑後面是否以/結尾  
         if (!filePath.endsWith("/")) {  
             filePath += "/";   
         }  
         //寫入到文件(注意文件保存路徑的後面必定要加上文件的名稱)  
         fileOut = new FileOutputStream(filePath+"123.png");  
         BufferedOutputStream bos = new BufferedOutputStream(fileOut);  
           
         byte[] buf = new byte[4096];  
         int length = bis.read(buf);  
         //保存文件  
         while(length != -1)  
         {  
             bos.write(buf, 0, length);  
             length = bis.read(buf);  
         }  
         bos.close();  
         bis.close();  
         conn.disconnect();  
    } catch (Exception e)  
    {  
         e.printStackTrace();  
         System.out.println("拋出異常!!");  
    }  
       
     return file;  
       
 }  

3.測試類

/**  
 * @param args  
 */  
public static void main(String[] args)  
{  
    String photoUrl = "123.png";   //文件URL地址                                     
    String fileName = photoUrl.substring(photoUrl.lastIndexOf("/"));     //爲下載的文件命名
    String filePath = "d:";      //保存目錄
    File file = saveUrlAs(photoUrl, filePath + fileName,"GET");    
}
相關文章
相關標籤/搜索