あるプログラマの日記

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

FTPのプログラム2

FTPのGETプログラムに続いて、
org.apache.commons.net.ftp.FTPClientを使用したFTPのPUTプログラム。
下記は既存のファイルをPUTするメソッド put() です。

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTP;

public class FtpTest{
    ...
    ...
    ...

    // IPアドレス
    private String ipAddr;
    // パッシブモード有効フラグ
    private boolean passiveMode;

    public FtpComm(String ipAddr){
        this.ipAddr = ipAddr;
    }

    public void setPassiveMode(boolean passiveMode){
        this.passiveMode = passiveMode;
    }
    ...
    ...
    ...
    /**
     * 指定ファイルをputする。
     * @param loginName FTPログイン名
     * @param password FTPパスワード
     * @param workDir ファイルがあるディレクトリ
     * @param fileName ファイル名
     * @return 結果 true 成功/false 失敗
     */
    public boolean put( String loginName, String password, 
                        String workDir, String fileName ){
        boolean result = false;
        InputStream in = null;
        FTPClient ftp = new FTPClient();

        try{
            // 接続
            ftp.connect( ipAddr );

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

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

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

            in = new FileInputStream( workDir + fileName );

            // 書き込みファイルの、FTPによるPUT
            result = ftp.storeFile( fileName, in );

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

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

動作的にはOKでした。

(一応動作はOKでしたが、保証はしませんので責任は一切持ちません。使用する場合は、使用する方の責任において、ご使用下さい。他に記述されているすべてのサンプルコードも同様です。)