使用FileUtils实现一个简易文件下载器

来源:互联网 发布:linux 通过代理上网 编辑:程序博客网 时间:2024/06/05 18:39

使用FileUtils实现一个简易文件下载器

今天使用使用FileUtils实现一个简易文件下载器  ,功能很简单,提供目标文件url输入框,和下载后文件保存的磁盘路径及文件名,点击下载即可完成。

主要是—--使用commons-io-2.5.jar,这是Apache的一个开源项目,是对Java IO的增强版,里面封装了很多文件操作、目录操作实用的方法。

核心类FileUtils,里面有很多操作文件的函数,如FileUtils.sizeOf(file);//获取文件的大小

 

本例则是使用里面的一个函数,从目标url,下载文件到本地磁盘。

先在网上找好待下载文件,如百度图片,右击复制图片地址

http://news.xinhuanet.com/photo/2016-06/16/129066324_14660334568691n.jpg

下载到  D:/todo/33.jpg


 源代码如下

package com.ljheee.ui;

import javax.swing.*;

import javax.swing.GroupLayout.Alignment;

import javax.swing.LayoutStyle.ComponentPlacement;

import org.apache.commons.io.FileUtils;

import java.awt.event.ActionListener;

import java.io.File;

import java.io.IOException;

import java.net.MalformedURLException;

import java.net.URL;

import java.awt.event.ActionEvent;

/**

 * UI界面--包括main方法

 * @authorljheee

 *

 */

public classDownloadFrame {

 

  private JFramejf =null;

  private JTextFieldtargetURL;

  private JTextFieldsaveURL;

  boolean isFinish = true;

  public DownloadFrame() {

     this.jf =new JFrame("Download 1.0");;

//   jf.setSize(400,300);

     jf.setLocationRelativeTo(null);

     jf.setResizable(false);

     jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    

     JLabellblUrlurl= newJLabel("URL  \u5F85\u4E0B\u8F7D\u6587\u4EF6url\u5730\u5740");

    

     targetURL = new JTextField();

     targetURL.setColumns(35);

    

     JLabellbldtodoabcpng= newJLabel("\u6587\u4EF6\u4FDD\u5B58\u8DEF\u5F84\u53CA\u547D\u540D   \u5982D:\\\\todo\\abc.png");

    

     saveURL = new JTextField();

     saveURL.setColumns(35);

    

     //开始下载

     JButtonbutton= newJButton("\u5F00\u59CB\u4E0B\u8F7D");

     button.addActionListener(new ActionListener() {

       public voidactionPerformed(ActionEvent arg0) {

         StringurlStr= targetURL.getText();

         URLurl= null;

         try {

            url = new URL(urlStr);

            Stringdest= saveURL.getText();

            downloadFile(url,dest);

         }catch(IOExceptione) {

            e.printStackTrace();

            isFinish = false;

            JOptionPane.showMessageDialog(jf,"Error: "+e.getMessage());

         }

         if(isFinish) JOptionPane.showMessageDialog(jf,"下载完成!");

       }

     });

    

     GroupLayoutgroupLayout= newGroupLayout(jf.getContentPane());

     groupLayout.setHorizontalGroup(

       groupLayout.createParallelGroup(Alignment.LEADING)

         .addGroup(groupLayout.createSequentialGroup()

           .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)

              .addComponent(lblUrlurl)

              .addComponent(targetURL, GroupLayout.PREFERRED_SIZE,GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)

              .addComponent(lbldtodoabcpng)

              .addComponent(saveURL, GroupLayout.PREFERRED_SIZE,GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)

              .addComponent(button))

            .addContainerGap(150,Short.MAX_VALUE))

     );

     groupLayout.setVerticalGroup(

       groupLayout.createParallelGroup(Alignment.LEADING)

         .addGroup(groupLayout.createSequentialGroup()

            .addGap(22)

            .addComponent(lblUrlurl)

            .addPreferredGap(ComponentPlacement.UNRELATED)

           .addComponent(targetURL, GroupLayout.PREFERRED_SIZE,GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)

            .addGap(37)

            .addComponent(lbldtodoabcpng)

            .addPreferredGap(ComponentPlacement.UNRELATED)

            .addComponent(saveURL, GroupLayout.PREFERRED_SIZE,GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)

            .addGap(29)

            .addComponent(button)

            .addContainerGap(59,Short.MAX_VALUE))

     );

     jf.getContentPane().setLayout(groupLayout);

    

     jf.pack();

     jf.setVisible(true);

  }

 

  /**

   * 从目标url 现在资源到dest

   * @param url 目标资源--可以是文件、视频、文本....

   * @param dest指定下载后 封装的文件对象,指定保存文件名和路径

   * @throws IOException

   */

  public  void downloadFile(URL url, Stringdest)throwsIOException {

     //下载方法(分装在commons-io-2.5.jar)一行搞定

     FileUtils.copyURLToFile(url,new File(dest));

  }

 

  public static void main(String[] args) {

     new DownloadFrame();

  }

}

 

需要注意的是,工程记得导入外部jar包,即commons-io-2.5.jar,这里可以免费下载http://download.csdn.net/download/ljheee/9551827。

导入这个包才能使用FileUtils。

 

本工程完整源代码下载可见http://download.csdn.net/detail/ljheee/9551859

 

1 0