久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【第84題】JAVA高級技術(shù)-網(wǎng)絡(luò)編程3(網(wǎng)絡(luò)資源的單線程下載)

 小虛竹 2022-06-13 發(fā)布于福建

回城傳送–》《JAVA筑基100例》

文章目錄

零、前言

? 今天是學習 JAVA語言 打卡的第84天,每天我會提供一篇文章供群成員閱讀( 不需要訂閱付錢 ),讀完文章之后,按解題思路,自己再實現(xiàn)一遍,。在小虛竹JAVA社區(qū) 中對應的 【打卡貼】打卡,今天的任務(wù)就算完成了,。

? 因為大家都在一起學習同一篇文章,所以有什么問題都可以在群里問,群里的小伙伴可以迅速地幫到你,一個人可以走得很快,一群人可以走得很遠,有一起學習交流的戰(zhàn)友,是多么幸運的事情。

? 學完后,自己寫篇學習報告的博客,可以發(fā)布到小虛竹JAVA社區(qū) ,供學弟學妹們參考,。

? 我的學習策略很簡單,題海策略+ 費曼學習法,。如果能把這100題都認認真真自己實現(xiàn)一遍,那意味著 JAVA語言 已經(jīng)筑基成功了。后面的進階學習,可以繼續(xù)跟著我,一起走向架構(gòu)師之路,。

一,、題目描述

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

二,、解題思路

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

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

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

獲得完整路徑,截取路徑,獲得路徑中最后一個斜杠的位置當文件名

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

測試下載這個鏈接:http://xz./small/FeiRarInstall.rar

三,、代碼詳解

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: 在一個線程中完成網(wǎng)絡(luò)資源的下載
 *
 * @author xiaoxuzhu
 * @version 1.0
 *
 * <pre>
 * 修改記錄:
 * 修改后版本        修改人修改日期修改內(nèi)容
 * 2022/5/24.1    xiaoxuzhu2022/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("單擊開始下載");
        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();// 文本框獲得焦點
            }
        });
        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對象
            URLConnection urlConn = url.openConnection();  // 獲得連接對象
            urlConn.connect();                           // 打開到url引用資源的通信鏈接
            InputStream in = urlConn.getInputStream() ;      // 獲得輸入流對象
            String filePath = url.getFile();                  // 獲得完整路徑
            int pos = filePath.lastIndexOf("/");              // 獲得路徑中最后一個斜杠的位置
            String fileName = filePath.substring(pos+1);      // 截取文件名
            FileOutputStream out = new FileOutputStream("D:/"+fileName);  // 創(chuàng)建輸出流對象
            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)容寫到輸出流
                len = in.read(bytes);                      // 繼續(xù)從輸入流中讀取內(nèi)容
            }
            out.close();          // 關(guān)閉輸出流
            in.close();           // 關(guān)閉輸入流
            JOptionPane.showMessageDialog(null, "下載完畢");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

如圖

如圖

四、推薦專欄

《JAVA從零到壹》

《JAVA筑基100例》

五,、示例源碼下載

關(guān)注下面的公眾號,回復筑基+題目號

筑基84

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多