FTP文件下载

来源:互联网 发布:电脑阅读txt软件 编辑:程序博客网 时间:2024/06/05 00:07

import java.io.*;
import java.net.InetAddress;
import java.net.*;
import java.util.Properties;

import org.apache.commons.net.ftp.*;

public class FTPDownload {

    Properties properties = null ;
   
    public static void main(String[] args) {
       
        FTPDownload ftpDownload = new FTPDownload();
        ftpDownload.loadProperties();
        ftpDownload.downloadFromFTP();
    }
   
    public void downloadFromFTP() {
       
        FTPClient ftp = new FTPClient(); ;
        String fileName = "" ;
        String localFolder = "" ;
        FileOutputStream fileOut = null ;
        InetAddress inetAddr;
   
        try {       

            inetAddr = InetAddress.getByName(properties.getProperty("host"));
            String ip = inetAddr.getHostAddress();
            System.out.println("ip:" + ip );
            ftp.connect(ip);       //Connect
            ftp.login(properties.getProperty("user"),properties.getProperty("pwd"));       //login
       
            localFolder = properties.getProperty("localFolder") ;
            System.out.println("localFolder:" + localFolder);
            String remoteFolder = properties.getProperty("remoteFolder");
            System.out.println("remoteFolder:" + remoteFolder);
            File localFolderPath = new File(localFolder);
           
            if(!localFolderPath.exists()){
                System.out.println("local folder doesn't exist.");
                localFolderPath.mkdir();
                System.out.println("local folder has been created.");
            }
           
            System.out.println("Current time : " + new java.util.Date());
           
            for (int j = 0; j < Integer.parseInt(properties.getProperty("repeatedTimes")); j++) {
               
                for(int i = 0 ; i < Integer.parseInt(properties.getProperty("filesNum"));i++){
                   
                    fileName = properties.getProperty("fileName"+ i)  ;
                    //create output stream
                    fileOut = new FileOutputStream(new File(localFolder + fileName));
                    System.out.println("Start downloading " + fileName);
                   
                    //download file from ftp
                    boolean haveDownloaded = ftp.retrieveFile(remoteFolder + fileName,fileOut);
                    System.out.println("haveDownloaded : " + haveDownloaded);
                    System.out.println("End downloading...");
                   
                }
                   
                System.out.println("Repeated times :" + ( j + 1 ));
            }
           
            System.out.println("All downloading task have already finished.");
            System.out.println("Current time : " + new java.util.Date());
           
            //release object
            ftp.logout();
            ftp.disconnect();
            ftp = null ;
           
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (SocketException e) {
            e.printStackTrace();
        }catch(FileNotFoundException e){
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }catch(NoClassDefFoundError e){
            e.printStackTrace();
        }
    }
   
    public void loadProperties(){
       
        File file = new File("FTPDownloadConfigurations.properties");
        FileInputStream fileInputStream = null;
       
        try {
            fileInputStream = new FileInputStream(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
       
        properties = new Properties();
       
        try {
            properties.load(fileInputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

properties文件

#host from which files are downloaded
host=域名
#user name for ftp accessing
user=账户
#user password for ftp accessing
pwd=密码
#local folder for preserving downloaded files
localFolder=D:/DownloadedFTPFiles/
#remote directory path of files to be downloaded
remoteFolder=softwares/test/
#number of files to be downloaded
filesNum=3
#name of files to be downloaded
fileName0=1.zip
fileName1=2.zip
fileName2=3.zip
#repeated times of downloading files
repeatedTimes=4

 

原创粉丝点击