Edited at

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);
    }
    // このあとファイルの取得など
    ・・・