2011年11月04日

【Java】EclipseでFTPを使ってみる

Eclipseを使ってJavaでFTPを実際に使ってみます(`・ω・´)

FTPを導入する手順は前回の記事を参照。
【Java】EclipseでFTPを使うためにJakarta Commonsを導入する手順


まどろっこしいのは苦手なのでいきなりサンプルコードです。
(こちらのサイト様を参考にさせてもらいました Jakarta Commons NETによるFTP処理(FTPClient) - Java入門

package hello;

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.*;


public class FtpClientHelper {
    private static final int FTP_PORT = 21;
    private static final String LOCALHOST = FFFTPでいう「ホスト名(アドレス)」の部分 ;
    private static final String USER = ユーザ名 ;
    private static final String PASSWORD = パスワード ;
   
    
    public static void test() {
        try {
            //ファイルアップロード
            FileInputStream fis = new FileInputStream("c:\testftp.txt");
            FTPClass.sendFile("remoteFilename", fis);
            
            //ファイルダウンロード
            FileOutputStream fos = new FileOutputStream("downloadfile.txt"); 
            FTPClass.retrieveFile("/data/downloadfile", fos);
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    
    static class FTPClass	{
    	
    	
	    //ファイルアップロード
	    public static void sendFile (String remoteFilename, InputStream is ) throws Exception {
	        FTPClient ftpclient = new FTPClient();
	        
	        try {
	            //指定するホスト、ポートに接続します
	            ftpclient.connect(LOCALHOST, FTP_PORT);
	            
	            // コネクト
	            if (!FTPReply.isPositiveCompletion(ftpclient.getReplyCode())) {
	                Exception ee = new Exception("Can't Connect to :" + LOCALHOST);
	                throw ee;
	            }
	            
	            //ログイン
	            if (ftpclient.login(USER, PASSWORD) == false) {
	                Exception ee = new Exception("Invalid user/password");
	                throw ee;
	            }
	
	            //ファイル転送モード設定
	            ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);
	            
	            //ファイル転送
	            ftpclient.storeFile(remoteFilename, is);
	                        
	        } catch (IOException e) {
	            throw e;
	        } finally {
	            try {
	                ftpclient.disconnect(); //接続解除
	            } catch (IOException e) {
	            }
	        }
	        
	    }
	    
	    
	    
	    //ファイルダウンロード
	    public static void retrieveFile(String remoteFilename, OutputStream os) throws Exception {
	        FTPClient ftpclient = new FTPClient();
	        
	        try {
	            //指定するホスト、ポートに接続します
	            ftpclient.connect(LOCALHOST, FTP_PORT);
	            
	            // コネクト
	            if (!FTPReply.isPositiveCompletion(ftpclient.getReplyCode())) {
	                Exception ee = new Exception("Can't Connect to :" + LOCALHOST);
	                throw ee;
	            }
	            
	            //ログイン
	            if (ftpclient.login(USER, PASSWORD) == false) {
	                Exception ee = new Exception("Invalid user/password");
	                throw ee;
	            }
	
	            //ファイル転送モード設定
	            ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);
	            
	            // ファイル受信
	            ftpclient.retrieveFile(remoteFilename, os);
	
	        } catch (IOException e) {
	            throw e;
	        } finally {
	            try {
	                ftpclient.disconnect(); //接続解除
	            } catch (IOException e) {
	            }
	        }
	    }
	    
	    
    }
}
※パッケージ名は各自変更願います
※「インポートされた org.apache.commons.net は見つかりません」などとエラーが表示された場合はこちらを参照
【Java】EclipseでFTPを使うためにJakarta Commonsを導入する手順


一応使い方の説明をば。

といってもかなり簡単で
    private static final String LOCALHOST = FFFTPでいう「ホスト名(アドレス)」の部分 ;
    private static final String USER = ユーザ名 ;
    private static final String PASSWORD = パスワード ;
この部分に必要な3つの情報を入れておくだけです

後はtest()関数のようにして使用出来ます。

プロジェクト内の他のファイルからインポートするときは先頭に
import hello.FtpClientHelper.FTPClass;
と追加すれば使用出来ます


初心者な僕でもこんなに簡単にできるとは・・・Javaは便利ですね(`・ω・´)


タグ:Eclipse java ftp
posted by ヒホ at 21:46| Comment(0) | TrackBack(0) | JAVA | このブログの読者になる | 更新情報をチェックする
最近の記事