Java多線程下載網圖的完整案例

Java多線程下載網圖案例

此案例依賴——文件操作工具類(FileUtils)

使用 apache 的commons-io包下的FileUtilsimportorg.apache.commons.io.FileUtils;

下載commons-io包

官方API文檔

點擊即可下載,然後導入IDEA的庫中或者項目中。

在這裡插入圖片描述

導包

在這裡插入圖片描述

首先創建一個下載器

步驟:

1.新建一個download類

2.在類中建立一個下載方法

下載方法需要接收2個變量,一個是url下載地址,一個是name文件名稱

3.在下載方法中調用文件操作工具類(FileUtils)

4.try/catch捕獲異常並提示異常

方法 說明
copyURLToFile(URL source, File destination) 將字節從URL復制source到文件中 destination。
//下載器
class download{
	//下載方法
 public void down(String url,String name){
  try {
   FileUtils.copyURLToFile(new URL(url),new File(name));
  } catch (IOException e) {
   e.printStackTrace();
   System.out.println("IO異常,download方法出現問題");
  }
 }
}

然後創建一個線程類

步驟:

1.創建線程類-多線程下載器,繼承Thread

2.定義2個私有變量(url下載地址,name文件名稱)

3.創建有參數構造器(用於初始化2個私有變量的值)

4.重寫Thread父類的run方法

run方法的方法體內寫入要執行的任務,我們的任務就是要下載網圖,因為要用到下載器裡面的下載方法,所以直接實例化download類,然後調用download類中的down方法,由於down方法需要接受2個String類型的變量(url和name),直接將2個私有變量傳入進去,最後給個提示,打印出下載的文件名稱。

public class 多線程下載器 extends Thread{
  private String url;
  private String name;
  public 多線程下載器(String url, String name) {
    this.url = url;
    this.name = name;
  }

  @Override
  public void run() {
    download download = new download();
    download.down(url,name);
    System.out.println("下載瞭名為"+name);
  }
}

在main方法中創建線程並啟動

步驟:

1.創建一個main方法

2.創建3個線程

創建線程的時候要傳入參數,目的是調用有參構造器初始化私有變量

這裡傳入3個圖片的地址以及文件的名稱

註意文件名稱,下載的文件類型要對應好相應的後綴名

多線程下載器 t1=new 多線程下載器(“https://www.baidu.com/favicon.ico”,”百度.ico”);
多線程下載器 t2=new 多線程下載器(“https://www.apple.com/favicon.ico”,”蘋果.ico”);
多線程下載器 t3=new 多線程下載器(“https://www.jd.com/favicon.ico”,”京東.ico”);

3.用start開啟3個線程

start方法會開啟新的線程,並且在新的線程中調用線程類中的run方法

public static void main(String[] args) {
    多線程下載器 t1=new 多線程下載器("https://www.baidu.com/favicon.ico","百度.ico");
    多線程下載器 t2=new 多線程下載器("https://www.apple.com/favicon.ico","蘋果.ico");
    多線程下載器 t3=new 多線程下載器("https://www.jd.com/favicon.ico","京東.ico");
    t1.start();
    t2.start();
    t3.start();
  }

全部代碼:

package 多線程;

import org.apache.commons.io.FileUtils;

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

public class 多線程下載器 extends Thread{
  private String url;
  private String name;
  public 多線程下載器(String url, String name) {
    this.url = url;
    this.name = name;
  }

  @Override
  public void run() {
    download download = new download();
    download.down(url,name);
    System.out.println("下載瞭名為"+name);
  }

  public static void main(String[] args) {
    多線程下載器 t1=new 多線程下載器("https://www.baidu.com/favicon.ico","百度.ico");
    多線程下載器 t2=new 多線程下載器("https://www.apple.com/favicon.ico","蘋果.ico");
    多線程下載器 t3=new 多線程下載器("https://www.jd.com/favicon.ico","京東.ico");
    t1.start();
    t2.start();
    t3.start();
  }
}
//下載器
class download{
  public void down(String url,String name){
    try {
      FileUtils.copyURLToFile(new URL(url),new File(name));
    } catch (IOException e) {
      e.printStackTrace();
      System.out.println("IO異常,download方法出現問題");
    }
  }
}

運行結果:

在這裡插入圖片描述

下載的文件默認位置在項目下如圖:

在這裡插入圖片描述

雙擊圖片文件可進行查看

在這裡插入圖片描述

總結

到此這篇關於Java多線程下載網圖的文章就介紹到這瞭,更多相關Java多線程下載網圖內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!