单线程写的下载器
2011-09-10 22:40 Rollen Holt 阅读(1489) 评论(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
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================