2014年5月25日 星期日

【筆記】使用Java下載網路資料檔案

最近想要寫個程式,能批次幫小弟捉一些網路上的資料下來,本來以為要寫的程式碼可能不少,但爬了一下文,了解到若使用Commons IO的話,就能省下不少時間!
先來看一下完整的範例程式碼:
package idv.jk.stock;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import org.apache.commons.io.FileUtils;

public class TestFirst {

 public static void main(String[] args) {
  try
  {
   String strUrl = "你要下載的檔案網址";
   URL source = new URL(strUrl);
   String theStrDestDir = "你要下載的檔案目的資料夾";
   File theStockDest = new File(theStrDestDir);
   FileUtils.forceMkdir(theStockDest);
   
   File destination = new File(theStrDestDir + 
                                   "下載儲存的檔名");
   
   FileUtils.copyURLToFile(source, destination);
   //File file = new File(".");
   System.out.println("File Downloaded!");
  } catch (MalformedURLException e)
  {
   e.printStackTrace();
  } catch (IOException e)
  {
   e.printStackTrace();
  }
 }

}
再來,小弟針對幾個重點做個說明,另外可以看一下Commons IO相關文件

先看到第19行的位置,小弟使用FileUtils.forceMkdir先來建立要存放下載檔案的資料夾,使用FileUtils.forceMkdir有一個好處,小弟不用擔心目的資料夾的父資料夾是否存在,使用此方法,會幫小弟傳入的資料夾參數依層建好。

再來最主要的重點在,在第24行中,使用FileUtils.copyURLToFile這個方法,將網路上的檔案下載回來!

第一個參數為指向要下載網址的URL(文件)物件,第二個為下載檔案路徑的File(文件)物件。

但若再仔細看FileUtils.copyURLToFile的文件說明,在存放下載檔案的資料夾不存在時,其實此方法就會幫小弟建立目的資料夾,所有第19行先行建立目的資料夾的步驟就可以省略。

參考資料

1 則留言:

李志洋 提到...

謝謝你的分享,非常有幫助!!