隨筆-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ù)  更多評論
            
          主站蜘蛛池模板: 周宁县| 崇阳县| 丰顺县| 兴海县| 宁都县| 上高县| 阿拉尔市| 杨浦区| 广东省| 东乌珠穆沁旗| 郑州市| 六枝特区| 克什克腾旗| 祁连县| 晋中市| 屯门区| 万山特区| 湖北省| 沭阳县| 青铜峡市| 安龙县| 长垣县| 临猗县| 合川市| 呼玛县| 黎平县| 抚顺市| 泾阳县| 巢湖市| 台东县| 成武县| 长武县| 黄骅市| 光泽县| 晴隆县| 彭阳县| 历史| 平乡县| 扶余县| 通化市| 开原市|