最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)網(wǎng)絡(luò)資源的單線程下載

 更新時(shí)間:2022年10月12日 09:26:43   作者:小虛竹and掘金  
這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)在一個(gè)線程中完成網(wǎng)絡(luò)資源的下載,文中的實(shí)現(xiàn)步驟講解詳細(xì),感興趣的可以嘗試下

一、題目描述

題目實(shí)現(xiàn):在一個(gè)線程中完成網(wǎng)絡(luò)資源的下載。

二、解題思路

創(chuàng)建一個(gè)類(lèi):SingleThreadDownloadFrame,繼承JFrame窗體類(lèi)。

定義一個(gè)download()方法:用于從指定網(wǎng)址下載文件

使用URLConnection類(lèi)的getInputStream()方法 獲取網(wǎng)頁(yè)資源的輸入流對(duì)象。

獲得完整路徑,截取路徑,獲得路徑中最后一個(gè)斜杠的位置當(dāng)文件名

從輸入流中讀取內(nèi)容,寫(xiě)到本地文件中。

測(cè)試下載這個(gè)鏈接

三、代碼詳解

SingleThreadDownloadFrame

package com.xiaoxuzhu;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
/**
 * Description: 在一個(gè)線程中完成網(wǎng)絡(luò)資源的下載
 *
 * @author xiaoxuzhu
 * @version 1.0
 *
 * <pre>
 * 修改記錄:
 * 修改后版本	        修改人		修改日期			修改內(nèi)容
 * 2022/5/24.1	    xiaoxuzhu		2022/5/24		    Create
 * </pre>
 * @date 2022/5/24
 */
public class SingleThreadDownloadFrame extends JFrame {

    private JTextField tf_address;
    /**
     * Launch the application
     * @param args
     */
    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    SingleThreadDownloadFrame frame = new SingleThreadDownloadFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame
     */
    public SingleThreadDownloadFrame() {
        super();
        getContentPane().setLayout(null);
        setTitle("網(wǎng)絡(luò)資源的單線程下載");
        setBounds(100, 100, 500, 237);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final JLabel label = new JLabel();
        label.setText("網(wǎng)絡(luò)資源的網(wǎng)址:");
        label.setBounds(10, 88, 118, 18);
        getContentPane().add(label);

        tf_address = new JTextField();
        tf_address.setBounds(117, 86, 357, 22);
        getContentPane().add(tf_address);

        final JButton button = new JButton();
        button.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent e) {
                String address = tf_address.getText().trim();// 獲得網(wǎng)址
                download(address);  // 下載文件
            }
        });
        button.setText("單擊開(kāi)始下載");
        button.setBounds(41, 144, 145, 28);
        getContentPane().add(button);

        final JButton button_1 = new JButton();
        button_1.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent e) {
                tf_address.setText(null);// 清除文本框內(nèi)容
                tf_address.requestFocus();// 文本框獲得焦點(diǎn)
            }
        });
        button_1.setText("清    空");
        button_1.setBounds(204, 144, 106, 28);
        getContentPane().add(button_1);

        final JButton button_2 = new JButton();
        button_2.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent e) {
                System.exit(0);
            }
        });
        button_2.setText("退    出");
        button_2.setBounds(328, 144, 106, 28);
        getContentPane().add(button_2);

        final JLabel label_1 = new JLabel();
        label_1.setForeground(new Color(0, 0, 255));
        label_1.setFont(new Font("", Font.BOLD, 24));
        label_1.setText("網(wǎng)絡(luò)資源的單線程下載");
        label_1.setBounds(117, 21, 301, 48);
        getContentPane().add(label_1);
    }
    public void download(String urlAddr){         // 從指定網(wǎng)址下載文件
        try {
            URL url = new URL(urlAddr);    // 創(chuàng)建URL對(duì)象
            URLConnection urlConn = url.openConnection();  // 獲得連接對(duì)象
            urlConn.connect();                           // 打開(kāi)到url引用資源的通信鏈接
            InputStream in = urlConn.getInputStream() ;      // 獲得輸入流對(duì)象
            String filePath = url.getFile();                  // 獲得完整路徑
            int pos = filePath.lastIndexOf("/");              // 獲得路徑中最后一個(gè)斜杠的位置
            String fileName = filePath.substring(pos+1);      // 截取文件名
            FileOutputStream out = new FileOutputStream("D:/"+fileName);  // 創(chuàng)建輸出流對(duì)象
            byte[] bytes = new byte[1024];                 // 聲明存放下載內(nèi)容的字節(jié)數(shù)組
            int len = in.read(bytes);                       // 從輸入流中讀取內(nèi)容
            while (len != -1){
                out.write(bytes,0,len);                     // 將讀取的內(nèi)容寫(xiě)到輸出流
                len = in.read(bytes);                      // 繼續(xù)從輸入流中讀取內(nèi)容
            }
            out.close();          // 關(guān)閉輸出流
            in.close();           // 關(guān)閉輸入流
            JOptionPane.showMessageDialog(null, "下載完畢");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

到此這篇關(guān)于Java實(shí)現(xiàn)網(wǎng)絡(luò)資源的單線程下載的文章就介紹到這了,更多相關(guān)Java資源單線程下載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Java數(shù)組擴(kuò)容縮容與拷貝的實(shí)現(xiàn)和原理

    詳解Java數(shù)組擴(kuò)容縮容與拷貝的實(shí)現(xiàn)和原理

    這篇文章主要帶大家學(xué)習(xí)數(shù)組的擴(kuò)容、縮容及拷貝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java接口回調(diào)的本質(zhì)詳解

    Java接口回調(diào)的本質(zhì)詳解

    大家好,本篇文章主要講的是Java接口回調(diào)的本質(zhì)詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • SpringMVC異步處理的 5 種方式示例詳解

    SpringMVC異步處理的 5 種方式示例詳解

    這篇文章主要介紹了SpringMVC異步處理的 5 種方式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • SpringBoot如何使用RequestBodyAdvice進(jìn)行統(tǒng)一參數(shù)處理

    SpringBoot如何使用RequestBodyAdvice進(jìn)行統(tǒng)一參數(shù)處理

    這篇文章主要介紹了SpringBoot使用RequestBodyAdvice進(jìn)行統(tǒng)一參數(shù)處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring如何使用通知?Advice?管理事務(wù)

    Spring如何使用通知?Advice?管理事務(wù)

    Spring 默認(rèn)采用聲明式事務(wù)管理(通過(guò)配置的方式) ,也可以實(shí)現(xiàn)編程式事務(wù)管理,這篇文章主要介紹了Spring使用通知Advice管理事務(wù),需要的朋友可以參考下
    2023-06-06
  • Java的wait(), notify()和notifyAll()使用心得

    Java的wait(), notify()和notifyAll()使用心得

    本篇文章是對(duì)java的 wait(),notify(),notifyAll()進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-08-08
  • spring boot 注冊(cè)攔截器過(guò)程詳解

    spring boot 注冊(cè)攔截器過(guò)程詳解

    這篇文章主要介紹了spring boot中注冊(cè)攔截器過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • spring如何使用命名空間p簡(jiǎn)化bean的配置

    spring如何使用命名空間p簡(jiǎn)化bean的配置

    這篇文章主要介紹了spring如何使用命名空間p簡(jiǎn)化bean的配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java詳解ScriptEngine接口動(dòng)態(tài)執(zhí)行JS腳本

    Java詳解ScriptEngine接口動(dòng)態(tài)執(zhí)行JS腳本

    ScriptEngine是基本接口,其方法必須在本規(guī)范的每個(gè)實(shí)現(xiàn)中完全起作用。這些方法提供基本腳本功能。 寫(xiě)入這個(gè)簡(jiǎn)單接口的應(yīng)用程序可以在每個(gè)實(shí)現(xiàn)中進(jìn)行最少的修改。 它包括執(zhí)行腳本的方法,以及設(shè)置和獲取值的方法
    2022-08-08
  • Spring Core動(dòng)態(tài)代理的實(shí)現(xiàn)代碼

    Spring Core動(dòng)態(tài)代理的實(shí)現(xiàn)代碼

    通過(guò)JDK的Proxy方式或者CGLIB方式生成代理對(duì)象的時(shí)候,相關(guān)的攔截器已經(jīng)配置到代理對(duì)象中去了,接下來(lái)通過(guò)本文給大家介紹Spring Core動(dòng)態(tài)代理的相關(guān)知識(shí),需要的朋友可以參考下
    2021-10-10

最新評(píng)論

五常市| 武宣县| 罗平县| 吉安县| 阜新市| 山西省| 茂名市| 文山县| 文山县| 紫云| 乌鲁木齐市| 宣威市| 闵行区| 达日县| 襄樊市| 石楼县| 茂名市| 拉萨市| 新巴尔虎右旗| 昭平县| 大名县| 淮南市| 天等县| 福鼎市| 若尔盖县| 安新县| 红安县| 青神县| 喜德县| 秦安县| 凤台县| 南投市| 凌海市| 青州市| 洪江市| 上林县| 利川市| 玛沁县| 五河县| 剑阁县| 衢州市|