搜尋此網誌

2013年6月13日 星期四

【Java】實作從網址下載pdf檔案

package Crawler;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;

/**
 * @author PTODUE
 *
 */
public class SavePdf {


 public static void main(String[] args) throws IOException {
  // TODO Auto-generated method stub
  String path = "http://XXX.XXX.XXX.XXX/a/b/XXXX.pdf";  //下載檔案的網址
  
  String filePath = url.getFile();   //檔案路徑  ex:a/b/XXXX.pdf
  String fileName ="";    //儲存檔名
  
  /*
   *取出XXXX.pdf
   *
  /
  int start = filePath.lastIndexOf("/") + 1;
        int end = filePath.lastIndexOf("?", start);
        if (end == -1)
            end = filePath.length();
        fileName = filePath.substring(start, end);
  
  String outputFile = "C:/downkload/"+fileName; // 要下載檔案的位置
  File desFile = new File(outputFile);

  if (desFile.exists())
   desFile.delete();
  
  
  URL url = new URL(path);
  URLConnection connection = url.openConnection();
  
  byte[] buffer = new byte[1024]; // InputStream

  // 設定接收資料流來源 ,就是要下載的網址
  BufferedInputStream bufferedInputStream = new BufferedInputStream(connection.getInputStream());
  // 設定 儲存要下載檔案的位置.
  BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(desFile));
  int length = -1;
  while ((length = bufferedInputStream.read(buffer)) != -1) {
   bufferedOutputStream.write(buffer,0,length);
  }
  bufferedOutputStream.flush();// 將緩衝區中的資料全部寫出
  bufferedInputStream.close(); // 關閉資料流
  bufferedOutputStream.close();
  System.out.println("下載完成");

 }
}

沒有留言: