あるプログラマの日記

プログラマのメモ、出来事、考えたこと、勉強とかの雑記

FTPのプログラム

FTPでファイルのPUT、GETの処理を、ガリゴリ書いて動作させていましたが、FTPのパッシブモードで、ちゃんと動いてくれません。
それで、かわりの org.apache.commons.net.ftp.FTPClient を見つけました。
パッシブモードもちゃんと対応しているし、動作もOKです。採用です。

FTPのGETは下記のような書き方で、動作しました。

import java.io.IOException;
import java.io.FileOutputStream;
import java.io.OutputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTP;

    ...
    ...
    ...

    FTPClient ftp = null;
    OutputStream out = null;
    boolean passiveMode = false;
    boolean result = false;
        
    try{
        ftp = new FTPClient();
        ftp.connect( ipAddr );
        ftp.login( loginName, password );
        ftp.setFileType( FTP.BINARY_FILE_TYPE );
        if( passiveMode )    ftp.enterLocalPassiveMode();

        out = new FileOutputStream( pathName );
        result = ftp.retrieveFile( fileName, out );

    }catch( IOException ioex ){
        ioex.printStackTrace();
    }finally{
        if( out != null ) out.close();
        if( ftp != null ){
            if( ftp.isConnected() ){
                ftp.logout(); 
                ftp.disconnect();
            }
            ftp = null;
        }
    }

    ...
    ...
    ...