隨筆-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 無聲 閱讀(5345) 評論(2)  編輯  收藏 所屬分類: 職場生活

          評論:
          # re: 一個java 下載FTP( Linux)服務(wù)器文件夾的例子 2011-08-21 15:23 | ww
          非常感謝,代碼很詳盡哦  回復(fù)  更多評論
            
          # re: 一個java 下載FTP( Linux)服務(wù)器文件夾的例子 2012-04-18 20:32 | pingdhm
          感謝你  回復(fù)  更多評論
            
          主站蜘蛛池模板: 龙海市| 武功县| 永安市| 铜川市| 健康| 天水市| 芒康县| 罗山县| 嵩明县| 四子王旗| 吉隆县| 大兴区| 沂水县| 新民市| 乡城县| 基隆市| 长宁区| 安达市| 修武县| 盱眙县| 吕梁市| 岫岩| 沙湾县| 隆安县| 尉氏县| 偏关县| 青铜峡市| 洛隆县| 滦平县| 图片| 北碚区| 郸城县| 华池县| 浦北县| 寻甸| 新乡县| 虞城县| 兴安盟| 济宁市| 壤塘县| 平昌县|