ライブラリ全体は、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 ); } } }
オリジナルサンプルコード
|
【java : 通信関連の最新記事】
- Java : WEB上のテキストファイルを取得する
- Java11 + Visual Studio Code + JavaMail( with JavaBeans Activation Framework )
- Javamail で IMAP 受信
- OkHttp v3.8.0 jar( と okio 1.13.0.jar ) を Eclipse のプロジェクトに追加して一般的な POST 送信を行う
- java をコマンドプロンプトからビルドして実行するサンプル。( メール送信が初心者には楽しいはず )
- Eclipse + JFace : HttpURLConnection で GET
- javamail でメール送信と、付属のバッチビルド用のスクリプトの解説
- Java : バッチでテストする Twiiter API の『検索処理』
- google-gson(Java) を使って、JSON を 定義済みクラスのオブジェクトに一括変換する
- Java : RSS(Document) から、item の中の先頭の指定した要素の値を取得するクラス
- google-gson で、JSON 文字列の構成要素の一覧を取り出す処理
- javamail 1.4.4 : IMAP で、ユーザから別のユーザへメッセージを全て(範囲指定で)コピーする
- javamail 1.4.4 : IMAP のメール受信イベントでメールを受け取ったら処理を行う
- Java : WEB 上の XML データの内容を取得する