隨筆-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ù)  更多評論
            
          主站蜘蛛池模板: 石柱| 东明县| 临安市| 潢川县| 灵武市| 若尔盖县| 太白县| 安康市| 洪泽县| 延长县| 怀柔区| 迁安市| 许昌县| 韶山市| 台中市| 海城市| 玉环县| 盘锦市| 延安市| 志丹县| 资阳市| 宜昌市| 海伦市| 佛教| 屏东县| 徐闻县| 瓦房店市| 凭祥市| 怀安县| 漯河市| 博客| 孟州市| 凤山县| 吴堡县| 铁岭市| 抚远县| 文成县| 东明县| 潮州市| 黄冈市| 石门县|