Jakarta Commons NETによるFTP処理(FTPClient)

2013/11/29 00:32更新
TAGS: Apache | ファイル|FTP|FTPClient|ダウンロード|アップロード|転送|Jakarta

Jakarta Commons NET(FTPClient)によるFTP処理(ファイルのアップロード、ダウンロード)の例です。

Apache Commons Net(FTPClient)について

サンプル


package com.test.ftp;

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

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


public class FtpClientHelper {
    private static final int FTP_PORT = 21;
    
    public static void main(String[] args) {
        try {
            //ファイルアップロード
            FileInputStream fis = new FileInputStream("c:\testftp.txt");
            
            FtpClientHelper.sendFile("localhost", FTP_PORT, "testuser", "testpassword", 
                    "remoteFilename", fis);
            
            //ファイルダウンロード
            FileOutputStream fos = new FileOutputStream("localfile"); 
            FtpClientHelper.retrieveFile("localhost", FTP_PORT, "testuser", "testpassword", 
                    "remoteFilename", fos);
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //ファイルアップロード
    public static void sendFile (String host, 
            int port,
            String user,
            String password,
            String remoteFilename,
            InputStream is
            ) throws Exception {
        FTPClient ftpclient = new FTPClient();
        
        try {
            //指定するホスト、ポートに接続します
            ftpclient.connect(host, port);
            int reply = ftpclient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                //接続エラー時処理
                Exception ee = new Exception("Can't Connect to :" + host);
                throw ee;
            }
            
            //ログイン
            if (ftpclient.login(user, password) == false) {
                // invalid user/password
                Exception ee = new Exception("Invalid user/password");
                throw ee;
            }

            //ファイル転送モード設定
            ftpclient.setFileType(FTP.BINARY_FILE_TYPE);
            //ftpclient.cwd("filetype=pdf");
            
            //ファイル転送
            ftpclient.storeFile(remoteFilename, is);
            //"ファイル転送完了
            
            // ファイル受信
            FileOutputStream fos = new FileOutputStream("localfile");
            ftpclient.retrieveFile("remotefile", fos);
                        
        } catch (IOException e) {
            //TODO エラー処理
            throw e;
        } finally {
            try {
                ftpclient.disconnect(); //接続解除
            } catch (IOException e) {
            }
        }
        
    }
    
    //ファイルダウンロード
    public static void retrieveFile(String host, 
            int port,
            String user,
            String password,
            String remoteFilename,
            OutputStream os) throws Exception {
        FTPClient ftpclient = new FTPClient();
        
        try {
            //指定するホスト、ポートに接続します
            ftpclient.connect(host, port);
            int reply = ftpclient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                //接続エラー時処理
                Exception ee = new Exception("Can't Connect to :" + host);
                throw ee;
            }
            
            //ログイン
            if (ftpclient.login(user, password) == false) {
                // invalid user/password
                Exception ee = new Exception("Invalid user/password");
                throw ee;
            }

            //ファイル転送モード設定
            ftpclient.setFileType(FTP.BINARY_FILE_TYPE);
            //ftpclient.cwd("filetype=pdf");
            
            // ファイル受信
            ftpclient.retrieveFile(remoteFilename, os);

        } catch (IOException e) {
            //TODO エラー処理
            throw e;
        } finally {
            try {
                ftpclient.disconnect(); //接続解除
            } catch (IOException e) {
            }
        }
    }
}

.

著者について
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


コメント

記事への評価

USER LOGIN FIRST
メールアドレス:
パスワード: