单线程写的下载器
2011-09-10 22:40 Rollen Holt 阅读(1508) 评论(0) 收藏 举报这个是界面,输入的必须是直接的下载地址。
代码如下:
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);
}
}
}
==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================
浙公网安备 33010602011771号