单线程下载器

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

代码如下:

?
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 );
         }
 
     }
 
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值