あるプログラマの日記

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

FTPのプログラム3

org.apache.commons.net.ftp.FTPClientを使用した
PUTしたいデータを指定したファイル名で、PUTするFTPプログラム。

import java.io.OutputStream;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTP;
    ...
    ...
    /**
     * データを指定したファイルでputする。
     * @param loginName FTPログイン名
     * @param password FTPパスワード
     * @param fileName 出力ファイル名
     * @param buffer PUTするデータのバッファ
     * @param offset PUTするデータの先頭からの位置
     * @param length PUTするデータの長さ
     * @return 結果 true 成功/false 失敗
     */
    public boolean put( String loginName, String password, 
                        String fileName, byte[] buffer,
                        int offset, int length ){
        boolean result = false;
        OutputStream out = null;
        FTPClient ftp = new FTPClient();
        try{
            // 接続
            ftp.connect( ipAddr );

            // ログイン
            ftp.login( loginName, password );

            // ファイルタイプの指定
            ftp.setFileType( FTP.BINARY_FILE_TYPE );

            // FTPパッシブモード指定
            if( passiveMode )   ftp.enterLocalPassiveMode();

            // 出力ストリームの取得
            out = ftp.storeFileStream( fileName );

            // データの書き込み、FTPによるPUT
            out.write( buffer, offset, length );
            out.flush();

        }catch( IOException ex ){
            ex.printStackTrace();
        }finally {
            if( out != null ){
                try {   out.close();
                }catch( IOException ex ){}
            }

            if( ftp != null ){
                ftp.completePendingCommand();
                try { 
                    if( ftp.isConnected() ){
                        ftp.logout(); 
                        ftp.disconnect();
                    }
                }catch( Exception nop ){ }
                ftp = null;
            }
        }
        return result;
    }
    ...
    ...

(動作の保証はしません。使用の場合は、使用者の責任において、ご使用下さい。他に記述されているすべてのサンプルコードにおいても同様に、使用者の方の責任において使用してください。)