comment-netツールを使用してFTPダウンロードファイルを実現

2379 ワード

FTPアドレスからファイルを一括ダウンロードする機能を実現するためにcomment-net.jarパッケージ.
プライマリインプリメンテーションコード
  • FTPリンクを取得し、FTPClientクラスに戻る方法
  • /**
         *   FTP   
         * @param hostName     
         * @param username     
         * @param password   
         * @return FTPClient  
         */
        public  static FTPClient getFTPClient(String hostName, String username , String password,int port){
            FTPClient ftpClient = new FTPClient();
            port = port == 0 ?21:port; //port   21
            try {
                ftpClient.connect(hostName,port);
                ftpClient.login(username, password);
                if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
                    System.err.println("    FTP,        。");
                    ftpClient.disconnect();
                } else {
                    ftpClient.setControlEncoding("UTF-8");
                    ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//       
                    ftpClient.enterLocalPassiveMode();
                    System.out.println("FTP    。");
                }
            } catch (IOException e) {
                e.printStackTrace();
                System.err.println("ip      ");
            }
            return ftpClient;
        }
    
  • ファイルをダウンロードする方法
  •  public static void downloadFtpFile(FTPClient ftpClient,String ftpFilePath,String localPath,String ftpFileName,String localNewFileName){
            try {
    
                ftpClient.changeWorkingDirectory(ftpFilePath.trim());//    
                OutputStream os = new FileOutputStream((localPath+File.separator+localNewFileName).trim());
                System.out.println("    FTP  :"+ftpClient.printWorkingDirectory()+"    ["+ftpFileName+"]  ["+localPath+"]");//      
                ftpClient.retrieveFile(ftpFileName,os);
                ftpClient.changeToParentDirectory();
                ftpClient.changeToParentDirectory();
                os.close();
    
    
            } catch (IOException e) {
                System.err.println("      ");
                e.printStackTrace();
            }
    
        }
    

    注意しなければならないのは
  • ftpのパスで使用するパス区切りは/
  • である.
  • ファイルのダウンロード中にパスを切り替えるには、最初はboolean changeWorkingDirectory(String pathname)メソッドを直接呼び出しましたが、無効です.ドキュメントを表示し、changeToParentDirectory()メソッドを選択しましたが、無効です.ネット上の他の人の説明を見てから、changeToParentDirectory()を2回呼び出してルートディレクトリに切り替えることができます.