SQLの窓

2011年10月12日


java : Apache commons-net-3.0.1 を使ってごく自然に FTPS(セキュア) でファイルのアップロード/ダウンロード



ライブラリ全体は、Apache Commons Net™ - Overview よりダウンロードしますが、
ライブラリは同梱しています( commons-net-3.0.1.jar )

FTPClientExample.java というサンプルが付いていましたが、コマンドラインで
実行するサンプルなのでオプション毎に処理が付加されているという解りにくい
ものだったので、必要なものをエラー処理をほとんどせずに記述しています。

※ バイナリとアスキーの違いをテストで確認しています
import java.io.*;
import org.apache.commons.net.ftp.*;

public class Main {

	// *****************************************************
	// エントリポイント
	// *****************************************************
	public static void main(String[] args) {
		Main thisClass = new Main();
	}

	// *****************************************************
	// コンストラクタ
	// *****************************************************
	public Main() {
		super();
		my_acton();
	}

	// *****************************************************
	// 初期処理
	// *****************************************************
	private void my_acton() {

		MyTool out = new MyTool(">>>");
		out.println("処理開始");

		try {

			// FTPS を使っています( FTPClient で通常のクライアントです )
			FTPSClient ftp;
			ftp = new FTPSClient();
			ftp.connect("サーバ");
			ftp.login("ユーザ", "パスワード");
			ftp.enterLocalPassiveMode();

			// テキストアップロード(バイナリ)
			// text.txt は、CRLF で 3バイト => 3バイト
			// サーバーにも CRLF のままでアップロードされるので
			// 問題の出る場合もあります
			ftp.setFileType(FTP.BINARY_FILE_TYPE);
			InputStream input1;
			input1 = new FileInputStream(".\\test.txt");
			ftp.storeFile("/home/ユーザ/www/test.txt", input1);
			input1.close();

			// テキストダウンロード(バイナリ)
			// text.txt は、CRLF で 3バイト => 3バイト
			// サーバーの状態のままダウンロードするファイルコピーです
			ftp.setFileType(FTP.BINARY_FILE_TYPE);
			OutputStream output1;
			output1 = new FileOutputStream(".\\test_download.txt");
			ftp.retrieveFile("/home/ユーザ/www/test.txt", output1);
			output1.close();

			// テキストアップロード(ASCII)
			// text.txt は、CRLF で 3バイト => 2バイト
			// Apache サーバでの都合で CRLF は LF に変換されます
			ftp.setFileType(FTP.ASCII_FILE_TYPE);
			InputStream input2;
			input2 = new FileInputStream(".\\test.txt");
			ftp.storeFile("/home/ユーザ/www/test_ascii.txt", input2);
			input2.close();

			// テキストダウンロード(ASCII)
			// text.txt は、CRLF で 2バイト => 3バイト
			// Winodws クライアントの都合で LF は CRLF に変換されます
			ftp.setFileType(FTP.ASCII_FILE_TYPE);
			OutputStream output2;
			output2 = new FileOutputStream(".\\test_download_ascii.txt");
			ftp.retrieveFile("/home/ユーザ/www/test_ascii.txt", output2);
			output2.close();

			// for-each ( 一覧 )
			for (FTPFile f : ftp.listFiles("/home/ユーザ/www")) {
					//System.out.println(f.getRawListing());
					System.out.println(f.toFormattedString());
			}

			//ftp.noop();
			ftp.logout();
			ftp.disconnect();

		}
		catch (Exception e) {
			out.println("エラー");
		}

		out.println("処理終了");

	}

	// *****************************************************
	// 内部用クラス
	// *****************************************************
	private class MyTool {

		private String mark = null;

		MyTool(String pm) {
			mark = pm;
		}

		public void println(String str) {
			System.out.println( this.mark + str );
		}

	}
}

オリジナルサンプルコード


posted by lightbox at 2011-10-12 21:45 | java : 通信関連 | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
PHP正規表現チェッカー
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり