天天看點

java多線程下載下傳網絡圖檔

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import java.util.ArrayList;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class ImageDown {

 /**

  * 下載下傳圖檔

  * @param str

  */

 public static void downImage(String str) {

  BufferedInputStream input = null;

  BufferedOutputStream out = null;

  URL url;

  try {

   url = new URL(str);

   URLConnection conn;

   conn = url.openConnection();

   String[] strName = str.split("/");

   String imageName = strName[strName.length - 1]; // 圖檔名

   String imageUrl = "D:/" + imageName;

   InputStream in = conn.getInputStream();

   input = new BufferedInputStream(in);

   out = new BufferedOutputStream(new FileOutputStream(imageUrl));

   int len = 0;

   while ((len = input.read()) != -1) {

    out.write(len);

   }

  } catch (MalformedURLException e) {

   e.printStackTrace();

  } catch (IOException e) {

   e.printStackTrace();

  } finally {

   if (out != null) {

    try {

     out.close();

    } catch (IOException e) {

     e.printStackTrace();

    }

   }

   if (input != null) {

    try {

     input.close();

    } catch (IOException e) {

     e.printStackTrace();

    }

   }

  }

 }

 /**

  * 擷取路徑

  * @return

  */

 public static ArrayList<String> getUrl(){

  ArrayList<String> list= new ArrayList<String>();

  BufferedReader read=null;

  try {

   URL url = new URL("http://www.tupianzj.com/chuangyi/");

   URLConnection conn = url.openConnection();

   InputStream input = conn.getInputStream();

   read = new BufferedReader(new InputStreamReader(input));//字元轉換成位元組

   //http://img.tupianzj.com/uploads/allimg/160525/9-1605251F6280-L.jpg

   Pattern pattern = Pattern.compile("http://\\w+\\.\\w+\\.com/\\w+/\\w+/\\d+/[0-9]-(\\w+\\d+|\\d+\\w+)([-][A-Z]\\.jpg|\\.jpg)");

   String str=null;

   while((str=read.readLine())!=null){

    Matcher match = pattern.matcher(str);

    if (match.find()) {

     String imageUrl = match.group();

     list.add(imageUrl);

    }

   }

  } catch (MalformedURLException e) {

   e.printStackTrace();

  }catch (IOException e) {

   e.printStackTrace();

  }finally{

   if (read!=null) {

    try {

     read.close();

    } catch (IOException e) {

     e.printStackTrace();

    }

   }

  }

  return list;

 }

}

/**

 * 開啟多線程

 * @author Administrator

 *

 */

class downimage extends Thread{

 String str;

 public downimage(String str){

  this.str=str;

 }

 @Override

 public void run() {

  BufferedInputStream input = null;

  BufferedOutputStream out = null;

  URL url;

  try {

   url = new URL(str);

   URLConnection conn;

   conn = url.openConnection();

   String[] strName = str.split("/");

   String imageName = strName[strName.length - 1]; // 圖檔名

   String imageUrl = "D:/" + imageName;

   InputStream in = conn.getInputStream();

   input = new BufferedInputStream(in);

   out = new BufferedOutputStream(new FileOutputStream(imageUrl));

   int len = 0;

   while ((len = input.read()) != -1) {

    out.write(len);

   }

  } catch (MalformedURLException e) {

   e.printStackTrace();

  } catch (IOException e) {

   e.printStackTrace();

  } finally {

   if (out != null) {

    try {

     out.close();

    } catch (IOException e) {

     e.printStackTrace();

    }

   }

   if (input != null) {

    try {

     input.close();

    } catch (IOException e) {

     e.printStackTrace();

    }

   }

  }

 }

}