jacarta commonsの使い方

このQ&Aのポイント
  • JavaでFTPサーバに接続してファイル情報のリストを取得する方法を学びましょう。
  • jacarta commonsを使用してFTPクライアントを作成し、接続、ログイン、ファイルリストの取得を行います。
  • エラーの原因となる箇所を特定するために、ログの出力や例外処理が必要です。
回答を見る
  • ベストアンサー

jacarta commonsの使い方

JavaでFTPサーバに接続してファイル情報のリストを取得したいのですが、 以下のソースだとエラーが起きてしまいます。 原因がさっぱり解らないのでご教示願います。 /** * */ package test.components; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.io.FileUtils; /** * @author 綿貫 隆夫 * <pre> * FTPClientのテスト * </pre> */ public class ftpClientTest { /** * @param args */ public static void main(String[] args) throws Exception{ // TODO 自動生成されたメソッド・スタブ FTPClient fp = new FTPClient(); try { fp.connect("61.214.209.83"); if (!FTPReply.isPositiveCompletion(fp.getReplyCode())) { // コネクトできたか? System.out.println("connection failed"); System.exit(1); // 異常終了 } else { System.out.println("connecction sucssesfull"); } if (fp.login("vms", "vms123") == false) { // ログインできたか? System.out.println("login failed"); System.exit(1); // 異常終了 } else { System.out.println("login sucssesfull"); } /* // ファイル受信 os = new FileOutputStream("c:/tmp/aaa.txt");// クライアント側 fp.retrieveFile("/home/searchman/bbb.txt", os);// サーバー側 os.close(); System.out.println("FTP GET COMPLETED"); // ファイル送信 is = new FileInputStream("c:/tmp/aaa.txt");// クライアント側 fp.storeFile("/home/searchman/ccc.txt", is);// サーバー側 is.close(); System.out.println("FTP PUT COMPLETED"); */ String[] flist = fp.listNames("."); for(int i=0; i<flist.length; i++) { System.out.println(flist[i]); } FTPFile [] ftpFiles = fp.listFiles("."); for ( int i=0; i<ftpFiles.length; i++) { // Check if FTPFile is a regular file if ( ftpFiles[i].getType () == FTPFile.FILE_TYPE ) { System.out.println ( "FTPFile: " + ftpFiles[i].getName () + "; " + FileUtils.byteCountToDisplaySize ( ftpFiles[i].getSize ())) ; } } } catch (Exception e) { e.printStackTrace(); } finally { fp.disconnect(); } } } よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

どんなエラーなのかも分からないのに原因なんて誰も分からないと思います。 せめて、何をしたらどんなエラーになったのか(エラーメッセージなど)くらい書いた方がいいです。

kagemarurx
質問者

お礼

文字数が足らなかったので書ききれませんでした。申し訳ありませんでした。

kagemarurx
質問者

補足

すいません。自己解決いたしました。 Jacarta-oroライブラリが無いと言うエラーでした。 ダウンロードしてビルドパスにoroライブラリを追加したら解決いたしました。 JRE1.4使用が前提条件でしたので、エラーが出ていたみたいです。

関連するQ&A

  • JAVA ファイル読み込みで文字化け発生

    お世話輪になります。 JAVAでプログラムを作成しているのですが、文字化けが発生してしまいます。ファイルの読み込みには、apache.commons.ioのライブラリを使用しています。インターネット等で調べたのですが、調べた限りでは特にやり方に問題がないように思うのですが、特定のファイルを読み込もうとすると文字化けしてしまいます。 以下が実際のプログラムです。 import org.apache.commons.io.FileUtils; import org.apache.commons.io.LineIterator; ---------------------------------------------- 以下抜粋 ---------------------------------------------- LineIterator iterator = FileUtils.lineIterator("C:\aaa.txt", "EUC-JP"; while(iterator.hasNext()){ String line = iterator.nextLine().split(","); System.out.println(line); あるファイルは正しく読み込まれますが、あるファイルはよみこまれません。 どなたかご存知の方いらっしゃいませんでしょうか? 困っています。何卒よろしくお願いいたします。

  • 楽天GOLDのポート変更でFTP送信JAVAプログラムが動かなくなりました

    初めて投稿させていただきます。 この度、楽天GOLDのFTPのポートが21から16910に変更になるというアナウンスが届いたため、JavaのプログラムでFTP送信処理を行っていたロジックにポートを指定するように変更にしました。 またPASVモードを使用するように指定されていたため、使用するようにロジックを変更しました。 変更後はコネクションを張ってログインまではプログラム上で正常に動いているのですが、肝心のファイルを送信する箇所で失敗してしまいます。 FFFTPというツールでは新しいポートでも正常に動いているため、何が原因かわからず困っております。 どなたかJavaのFTP処理でお詳しい方いらしたらご教授お願い致します。 public static void main(String[] args) { FTPClient fp = new FTPClient(); String sever = "ftp.rakuten.ne.jp"; int port = 16910; String user = "*****"; String password = "******"; int timeout = 40000; String path = "/test/test.jpg"; FileInputStream is = null; try{ fp.enterLocalPassiveMode(); fp.connect(sever,port); if (!FTPReply.isPositiveCompletion(fp.getReplyCode())) { System.out.println("接続失敗!"); }else{ System.out.println("接続成功!"); } if (fp.login(user, password) == false) { System.out.println("ログイン失敗!"); }else{ System.out.println("ログイン成功!"); } fp.setFileType(FTP.BINARY_FILE_TYPE); fp.setSoTimeout(timeout); is = new FileInputStream("C:\\TEST\\test.jpg"); boolean boolFtp = fp.storeFile(path, is); if(boolFtp){ System.out.println("ファイル転送成功!"); }else{ System.out.println("ファイル転送失敗!" + fp.getReplyCode()); } }catch(Exception e){ System.out.println("例外発生!"); } }

    • ベストアンサー
    • Java
  • commons-net-2.0の使用が出来ない

    commons-net-2.0の使用が出来ない javaでFTP接続をしようとし、とあるサイトの説明を見ながらやったのですが (1)Commons Netのダウンロードページからバイナリーのアーカイブをダウンロードする。(commons-net-2.0.zip) はい、まず「commons-net-2.0.zip」というのをダウンロードしました。 (2)適当な場所にアーカイブを展開する。 展開はされるのですが、最後の最後に 「commons-net-2.0¥commons-net-2.0-javadoc.jar」 - 正常に解凍でいません。CRCが一致しないか、出力先ファイルが使用中です。 と、出ます。原因がよくわかりません。 (3)展開したディレクトリーの「commons-net-2.0」の直下にあるcommons-net-2.0.jarを適当な場所にコピーする。 まず、「commons-net-2.0」の直下にcommons-net-2.0.jarというものがありません。 commons-net-2.0-javadoc.jarというものならあるのですが・・・。 なので、「commons-net-2.0-javadoc.jar」というのを外部jarの追加をしたのですが、 ソース中に「import org.apache.commons.net.ftp.FTPClient;」とやってもエラーがでて使用できません。 他に、「commons-net-2.0.zip」を「commons-net-2.0.jar」と、拡張子を変えて、 この「commons-net-2.0.jar」をクラスパスの設定で外部jar追加したけどやっぱりだめでした。 かれこれ3時間以上格闘してるのですが、さっぱりです。 どうか、 「commons-net-2.0.jar」を追加し、 「FTPClient ftpClient = new FTPClient();」 ↑これを使えるようにできるにはどうしたらいいかご教授願えないでしょうか? jarの追加とかクラスパスの追加に関して疎いもので・・・。 (ちなみにsun.net.ftp.FtpClient;の方は使う気はありません)

    • ベストアンサー
    • Java
  • commons-netでのFTP送信について

    いつもお世話になっております。 commons-netを利用してのFTP送信を作成しています。 FTPClient fp = new FTPClient(); FileInputStream is = null; fp.setDefaultPort(21); fp.connect("XXX.XX.XXX.XX"); fp.login("ID", "PASS"); boolean isRemotePassive = fp.enterRemotePassiveMode(); fp.enterLocalPassiveMode(); fp.setFileType(FTP.BINARY_FILE_TYPE); is = new FileInputStream("送信ファイル"); fp.storeFile("送信先", is); fp.disconnect(); is.close(); と行っていますが、送信されません。 ログが見れないのでどこで落ちているのかわからない状況ですが、 firewallの設定がされている場合、上記方法で送信は可能でしょうか? 宜しくお願い致します。

    • ベストアンサー
    • Java
  • ファイルの指定について

    お世話になります。 import java.io.*; class Sample1_1 { public static void main(String[] args) { File fp = new File("foo.txt"); if (fp.exists()) { System.out.println("foo.txtは存在します。"); } else { System.out.println("foo.txtは存在しません。"); } } } プログラミングを学習中の者です。 eclipseにてこのようなサンプルプログラムを入力して勉強しているのですが、わからないことだらけなので、教えてください。 上記のプログラムでは対象ファイルの名前しか指定されていませんが この場合、「foo.txt」はどこに存在していることになるのでしょうか? おそらくパスが省略されていても問題ないということなのでしょうが、 なぜそうなのか、ということについてがわからないため、ご教示いただきたく思います。 よろしくお願いいたします。

  • Senを用いてファイルの移動をさせたいんですが・・

    形態素解析システム「Sen」を用いて、テキストの内容を判別してファイルを移動させたいんですが、以下のプログラムでは「Path」という言葉があったら指定ディレクトリに移動するようにしたいんですが、移動しませんでした。エラーも出ていません。A~Bのif文は通過したんですが・・ 何がまずいんでしょうか?? import java.io.File; import net.java.sen.StringTagger; import net.java.sen.Token; import java.io.BufferedReader; import java.io.FileReader; public class samp1 { public static void main(String args[]) { System.setProperty("sen.home", "./"); System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); try { File F = new File("C:/Documents and Settings/デスクトップ/test"); String path = F.getPath(); System.out.println("指定したディレクトリ:" + path); File a[] = F.listFiles(); for( int i=0; i<a.length; i++ ) { if( a[i].isFile() ){ System.out.println(a[i] + "(ファイル)"); FileReader fr = new FileReader(a[i]); BufferedReader br = new BufferedReader(fr); StringTagger tagger = StringTagger.getInstance(); String s; while ((s = br.readLine()) != null) { Token[] token = tagger.analyze(s); if (token != null) {for (int l = 0; l < token.length; l++) { if(token[l].toString().equals("Path")){ //A File file2 = new File( "C:/Documents and Settings/デスクトップ/receive/"+a[i].getName()); boolean ret = a[i].renameTo( file2 ); System.out.println("移動したデイレクトリ:"+file2.getPath()); //B } } } } } } catch (Exception e) { e.printStackTrace();} } }

    • ベストアンサー
    • Java
  • HttpClientについて

    MixiにログインするサンプルプログラムがあったのでEclipse上動かそうと思い HttpClientのライブラリをダウンロードし実行しようとしたところ PostMethod、GetMethodについて型に解決できませんと出ました。 ダウンロードしたファイルの中にあった全てのjar(以下の6個)にパスを通したのですが まだ何かライブラリが足りないのでしょうか。 ・commons-codec-1.4.jar ・commons-logging-1.1.1.jar ・httpclient-4.1.2.jar ・httpclient-cache-4.1.2.jar ・httpcore-4.1.2.jar ・hhtpmime-4.1.2.jar import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import org.apache.http.HttpException; import org.apache.http.client.HttpClient; import org.apache.http.client.params.CookiePolicy; import org.apache.http.impl.client.DefaultHttpClient; public class MixiLogin2 { public static void main(String[] args) { HttpClient client = new DefaultHttpClient(); String mixiLogin = "http://mixi.jp/login.pl"; String mixiTopPage = "http://mixi.jp/home.pl"; String encode = "EUC-JP"; String inputUserName = "email"; String inputPassword = "password"; String inputNextUrl = "next_url"; String userName = "xxxxx@xxxxx.com"; String password = "xxxx123456789"; String nextUrl = "/home.pl"; PostMethod postMethod = new PostMethod(mixiLogin); postMethod.addParameter(inputUserName, userName); postMethod.addParameter(inputPassword, password); postMethod.addParameter(inputNextUrl, nextUrl); postMethod.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); try { int statusCode = client.executeMethod(postMethod); System.out.println(statusCode); postMethod.releaseConnection(); if (statusCode == 200) { GetMethod getMethod = new GetMethod(mixiTopPage); statusCode = client.executeMethod(getMethod); if (statusCode == 200) { BufferedReader br = new BufferedReader( new InputStreamReader(getMethod .getResponseBodyAsStream(), encode)); String line; while ((line = br.readLine()) != null) { System.out.println(line); } } getMethod.releaseConnection(); } } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

    • ベストアンサー
    • Java
  • 実行時にファイル指定するのではなくコンパイル時に指定したい。

    import java.io.*; class test { public static void main(String args[]) { char ch[] = new char[128]; try { FileReader fp = new FileReader(args[0]); fp.read(ch); System.out.println(ch); } catch (IOException e) { System.out.println("例外 - " + e); } catch (ArrayIndexOutOfBoundsException e) { System.out.println(); } } } 以上プログラムについての質問です。 ファイルを読み込み配列に格納するプログラムです。 読み込みたいファイルをabc.txtとします。 ↑では実行時にjava test abc.txtと指定して テキストの中身を表示するのですが プログラム内に読み込むテキストをはじめからいれておきたいです。 この場合どのようにabc.txtをプログラム内にいれたらよいでしょうか? また文のはじめから終わりまで読み込んで全部出力してしまうのですが 例えば、1文だけ(改行まで)読み取る、ですとか 1文だけ読み取るのを上から順番ではなくてランダムに読み取る、などはどうやればよいのでしょうか? わかる方、ヒントだけでも結構です。 よろしく御願いします。

    • ベストアンサー
    • Java
  • javaについて

    以下のようにキーボードから入力していくプログラムを試行しているのですが、エラーが出てくるので行き詰まっています。 理想的にはキーボードに”あいう”エンター”えおか”エンターと打ち込んだら str[0]=あいう str[1]=えおか と表示させていきたいのですが、よろしくお願いします。 import java.io.*; import java.lang.*; import java.net.*; import java.awt.*; class gugu2 { public static void main(String[] args) throws IOException { int i=0; while(i<2){ System.out.println("キーワード入力"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); char str[] = input.toCharArray(); System.out.println("キーワードは" + str[]); i=i+1; } for(i=0;i<2;i++){ System.out.println(str[]); } } } これがエラー表示です。 gugu2.java:17: '.class' がありません。 System.out.println("キーワードは" + str[]); ^ gugu2.java:21: '.class' がありません。 System.out.println(str[]); ^ エラー 2 個

    • ベストアンサー
    • Java
  • Servletでcsvファイル読込

    Servletからcsvファイルを読込む処理を作成しています。 しかし、FileNotFoundExceptionが発生してファイルを読込めません。 下記のように記述した場合、csvファイルはどこに置けばよいのでしょうか? いろいろファイルの置き場所を変えてはやってみましたがダメでした。 package action; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class MemberEntryAction extends Action{ public ActionForward execute(ActionMapping mapping,ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { try { // 入力ストリームを作成。 FileReader fr = new FileReader("a.csv"); BufferedReader br = new BufferedReader(fr); // 読込みループ。 String line; // 読み込まれた1行。 while( (line = br.readLine()) != null ) { System.out.println(line); } // 入力・出力ストリームを閉じる。 br.close(); fr.close(); } catch ( FileNotFoundException e ) { System.out.println("FileNotFound!"); } return mapping.findForward("memberMenu"); } }

専門家に質問してみよう