Java
FTPClient
FTPFileFilter

JavaでFTP接続してファイルを取得する

More than 1 year has passed since last update.

ファイル取得等はあっちこっちに書かれてるから省略。
あまり見つからなかったプロキシ経由で接続したい時と、FTPFileFilterの実装についてメモ。

  • プロキシ経由で接続したいとき

    // FTPクライアント作成
    FTPClient ftpClient = new FTPClient();
    
    try {
        // プロキシ経由で接続
        if (proxyHost != null && !proxyHost.equals("")) {
            ftpClient = new FTPHTTPClient(proxyHost, proxyPort);
            ftpClient.connect(ftpHost);
            ftpClient.login(user, passwd);
        } else {
             ftpClient.connect(ftpHost);
             ftpClient.login(user, passwd);
        }
    
        ・・・
    
  • FTPFileFilter
    FTPサーバに接続後、お目当てのファイルを取得するのにフィルタをかけられる。

    // ファイルフィルタ
    FTPFileFilter filter = new FTPFileFilter() {
    
        @Override
        public boolean accept(FTPFile ftpFile) {
            // 正規表現でマッチさせたファイルを取得
            Pattern pattern;
            pattern = Pattern.compile("^[0-9a-zA-Z].txt$");
            return (ftpFile.isFile() && pattern.matcher(ftpFile.getName()).find());
        }
    };
    
    ftpClient.enterLocalPassiveMode();
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
    
    FTPFile[] result;
    if (filter != null && !filter.equals("")) {
        result = ftpClient.listFiles(targetDir, filter);
    } else {
        result = ftpClient.listFiles(targetDir);
    }
    // このあとファイルの取得など
    ・・・