单线程下载器

转载 2012年03月25日 18:21:48

这个是界面,输入的必须是直接的下载地址。

代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package net;
 
import java.awt.FlowLayout;
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.JPanel;
import javax.swing.JTextField;
 
public class SingleThreadDownload extends JFrame implements ActionListener{
    public SingleThreadDownload(){
        panel.setLayout(new FlowLayout());
        label1.setFont(new Font("雅黑", Font.BOLD, 15));
        panel.add(label1);
        panel.add(label2);
        panel.add(urlField);
        panel.add(StartButton);
        panel.add(resetButton);
        panel.add(exitButton);
        setContentPane(panel);
        StartButton.addActionListener(this);
        resetButton.addActionListener(this);
        exitButton.addActionListener(this);
        setSize(400, 400);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
 
    public void download(String address) throws Exception{
        URL url = new URL(address);
        URLConnection urlcon = url.openConnection();
        urlcon.connect();
        InputStream in = urlcon.getInputStream();
        String filePath = url.getFile();
        int pos = filePath.lastIndexOf("/");
        String fileName = filePath.substring(pos + 1);
        FileOutputStream out = new FileOutputStream("D:\\" + fileName);
        byte[] bytes = new byte[1024];
        int len = in.read();
        while(len != -1){
            out.write(bytes, 0, len);
            len = in.read();
        }
        out.close();
        in.close();
        JOptionPane.showMessageDialog(this, "下载完毕");
    }
 
    public static void main(String[] args){
        new SingleThreadDownload();
    }
 
    private final JPanel panel = new JPanel();
    private final JLabel label1 = new JLabel("网络资源的单线程下载:");
    private final JLabel label2 = new JLabel("网络资源的网址:");
    JButton StartButton = new JButton("点击开始下载");
    JButton resetButton = new JButton("清空");
    JButton exitButton = new JButton("退出");
    JTextField urlField = new JTextField(20);
 
    @Override
    public void actionPerformed(ActionEvent e){
        if(e.getSource() == StartButton){
            if("".equals(urlField.getText())){
                JOptionPane.showMessageDialog(this, "请输入资源地址");
            }
            String url = urlField.getText();
            try{
                download(url);
            }catch(Exception e1){
                JOptionPane.showMessageDialog(this, "资源地址有误,请检查,谢谢!");
                e1.printStackTrace();
            }
        }else if(e.getSource() == resetButton){
            urlField.setText("");
        }else{
            System.exit(0);
        }
 
    }
 
}
举报

相关文章推荐

Android实现简易轻量下载器:单线程任务队列

最近的项目是一个与音乐相关的App,其中有一个功能:收藏喜欢的歌曲,在wifi的环境下自动下载。考虑到音乐歌曲都是3、4Mb的小文件,断点下载的功能便不需要了。因此只需要实现一个特别轻量、简单的下载管...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)