Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2015 The University of Vermont and State
   * Agricultural College.  All rights reserved.
   *
   * Written by Matthew B. Storer <matthewbstorer@gmail.com>
   *
   * This file is part of CCTS Common.
   *
   * CCTS Common is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  *
  * CCTS Common is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * along with CCTS Common.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 package edu.uvm.ccts.common.ftp;
 
 
 import java.util.List;

Created by mstorer on 11/26/13.
 
 public class FTPClient {
     private static final Log log = LogFactory.getLog(FTPClient.class);
 
     private String host;
     private String user;
     private String pass;
 
     public FTPClient(String hostString userString pass) {
         this. = host;
         this. = user;
         this. = pass;
     }
 
     public void connect() throws IOException {
         try {
             .connect();
             .login();
             .enterLocalPassiveMode();
             .setFileType(.);
 
             .info("connected to '" +  + "'");
 
         } catch (IOException e) {
             try { if ( != null.logout(); } catch (Exception e1) {}
             try { if ( != null.disconnect(); } catch (Exception e1) {}
 
             throw e;
         }
     }
 
     public void disconnect() {
         .info("disconnected from '" +  + "'");
 
         try { if ( != null.logout(); } catch (Exception e1) {}
         try { if ( != null.disconnect(); } catch (Exception e1) {}
     }
 
     public void chdir(String dirthrows IOException {
         .changeWorkingDirectory(dir);
     }
 
     public void download(String remoteFilenameString localFilenamethrows IOException {
         String localPath = FileUtil.getPathPart(localFilename);
         if ( ! localPath.isEmpty() ) {
             FileUtil.createDirectory(localPath);
         }
 
         boolean success = false;
         int attempt = 0;
         int maxAttempts = 2;
 
         while ( ! success && attempt < maxAttempts ) {
             OutputStream output = null;
 
             try {
                 output = new BufferedOutputStream(new FileOutputStream(localFilename));
                .retrieveFile(remoteFilenameoutput);
                success = true;
            } catch (FTPConnectionClosedException e) {
                .debug("remote server disconnected - attempting to re-establish connection -");
                connect();
            } finally {
                attempt ++;
                try { if (output != nulloutput.flush(); } catch (Exception e1) {}
                try { if (output != nulloutput.close(); } catch (Exception e1) {}
            }
        }
    }
    public List<StringlistFiles(String filenameFilterthrows IOException {
        List<Stringlist = new ArrayList<String>();
        for (FileMetadata metadata : listFilesWithMetadata(filenameFilter)) {
            list.add(metadata.getFilename());
        }
        return list;
    }
    public List<FileMetadatalistFilesWithMetadata(String filenameFilterthrows IOException {
        List<FileMetadatalist = new ArrayList<FileMetadata>();
        String remotePath = .printWorkingDirectory();
        boolean includePath = FileUtil.getPathPart(filenameFilter).isEmpty();
        FTPFile[] files = .listFiles(filenameFilter);
        if (files != null && files.length > 0) {
            for (FTPFile file : files) {
                String filename = includePath ? remotePath + "/" + file.getName() : file.getName();
                long timestamp = file.getTimestamp().getTime().getTime();
                long size = file.getSize();
                list.add(new FileMetadata(filenametimestampsize));
            }
        }
        return list;
    }
    public String getHost() {
        return ;
    }
    public String getUser() {
        return ;
    }
New to GrepCode? Check out our FAQ X