隨筆-200  評論-148  文章-15  trackbacks-0
          import java.io.File;
          import java.io.FileOutputStream;
          import java.io.IOException;
          import java.io.OutputStream;

          import org.apache.commons.net.ftp.FTPClient;
          import org.apache.commons.net.ftp.FTPClientConfig;
          import org.apache.commons.net.ftp.FTPFile;

          public class DownFTPFile {

          private String hostname;
          private String username;
          private String password;
          private String localBaseDir;
          private String remoteBaseDir;


          private static FTPClient ftpClient = new FTPClient();

          public static void main(String[] args) {
          String hostname = "172.18.72.66";
          String username = "sfdc3";
          String password = "sfdcadmin";
          String localBaseDir = "c:/temp/";
          String remoteBaseDir = "ptsinstall/v3.20.06";

          DownFTPFile downFTPClient = new DownFTPFile();
          downFTPClient.setHostname(hostname);
          downFTPClient.setUsername(username);
          downFTPClient.setPassword(password);
          downFTPClient.setLocalBaseDir(localBaseDir);
          downFTPClient.setRemoteBaseDir(remoteBaseDir);
          downFTPClient.startDown();
          }

          private void startDown() {
          try {
          ftpClient.connect(hostname);
          ftpClient.login(username, password);
          FTPClientConfig conf = new FTPClientConfig( FTPClientConfig.SYST_UNIX);
          ftpClient.configure(conf);
          } catch (Exception e1) {
          e1.printStackTrace();
          }

          try {
          FTPFile[] files = null;
          boolean changedir = ftpClient.changeWorkingDirectory(remoteBaseDir);
          if ( changedir ){
          files = ftpClient.listFiles();
          for (int i = 0; i < files.length; i++) {
          downloadFile(files[i], localBaseDir, remoteBaseDir);
          }
          }
          } catch (Exception e) {
          System.out.println(e);
          }
          }

          private void downloadFile(FTPFile ftpFile, String relativeLocalPath,String relativeRemotePath) {
          if (ftpFile.isFile()) {//down file
          if (ftpFile.getName().indexOf("?") == -1) {
          OutputStream outputStream = null;
          try {
          outputStream = new FileOutputStream(relativeLocalPath+ ftpFile.getName());
          ftpClient.retrieveFile(ftpFile.getName(), outputStream);
          outputStream.flush();
          outputStream.close();
          } catch (Exception e) {
          System.err.println( e );
          } finally {
          try {
          if (outputStream != null)
          outputStream.close();
          } catch (IOException e) {
          System.out.println("ShowasaFile");
          }
          }
          }
          } else { //deal dirctory
          String newlocalRelatePath = relativeLocalPath + ftpFile.getName();
          String newRemote = new String(relativeRemotePath+ ftpFile.getName().toString());

          File fl = new File(newlocalRelatePath);
          if (!fl.exists()) {
          fl.mkdirs();
          }
          try {
          newlocalRelatePath = newlocalRelatePath + '/';
          newRemote = newRemote + "/";
          String currentWorkDir = ftpFile.getName().toString();
          //enter relative workdirectory
          boolean changedir = ftpClient.changeWorkingDirectory(currentWorkDir);
          if (changedir) {
          FTPFile[] files = null;
          files = ftpClient.listFiles();
          for (int i = 0; i < files.length; i++) {
          downloadFile(files[i], newlocalRelatePath, newRemote);
          }
          }
          //return parent directory
          if (changedir)
          ftpClient.changeToParentDirectory();
          } catch (Exception e) {
          System.out.println(e);
          }
          }
          }


          public String getHostname() {
          return hostname;
          }


          public void setHostname(String hostname) {
          this.hostname = hostname;
          }


          public String getPassword() {
          return password;
          }


          public void setPassword(String password) {
          this.password = password;
          }


          public String getUsername() {
          return username;
          }


          public void setUsername(String username) {
          this.username = username;
          }


          public String getLocalBaseDir() {
          return localBaseDir;
          }


          public void setLocalBaseDir(String localBaseDir) {
          this.localBaseDir = localBaseDir;
          }


          public String getRemoteBaseDir() {
          return remoteBaseDir;
          }


          public void setRemoteBaseDir(String remoteBaseDir) {
          this.remoteBaseDir = remoteBaseDir;
          }
          }
          posted on 2008-05-16 13:22 無聲 閱讀(5342) 評論(2)  編輯  收藏 所屬分類: 職場生活

          評論:
          # re: 一個java 下載FTP( Linux)服務器文件夾的例子 2011-08-21 15:23 | ww
          非常感謝,代碼很詳盡哦  回復  更多評論
            
          # re: 一個java 下載FTP( Linux)服務器文件夾的例子 2012-04-18 20:32 | pingdhm
          感謝你  回復  更多評論
            
          主站蜘蛛池模板: 黑河市| 利津县| 崇义县| 清苑县| 基隆市| 阜宁县| 盘锦市| 北碚区| 丰台区| 阿巴嘎旗| 呼图壁县| 赣榆县| 辉县市| 鄂托克旗| 桂东县| 宾川县| 彝良县| 弥勒县| 措勤县| 环江| 镶黄旗| 临城县| 时尚| 报价| 襄樊市| 兖州市| 舟山市| 元江| 鹿邑县| 南汇区| 南投县| 兴山县| 疏勒县| 靖安县| 峨山| 北宁市| 响水县| 连江县| 彭州市| 山阳县| 台中市|