• 締切済み

FTPプログラムについて

JAVAでFTP送受信を行うプログラムを作っています。 その中で、FTPコマンドで言うところの「lcd」を発行し ローカルディレクトリを指定したいのですが ロジックとしてどう記述してよいのかかわかりません。 FTPプログラムで、上記の例を経験されていたら 知恵をお貸し下さい。 よろしくお願いします。

  • Java
  • 回答数2
  • ありがとう数3

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

Yes ctrlOutput.println("lcd " + dirName); ctrlOutput.flush(); でOKよ そもそもcdもlcdも使う必要ないのよね つかわなくったってファイルは いくらでも指定できるんだから

kw119yk
質問者

お礼

お返事、ありがとうございます。 String line = ctrlInput.readLine(); などで、lineの中の三桁の応答コードを抽出してみますと 500(エラー)がかえってきます・・・。 lcdは駄目なのかと思いました・・・でもできるのですね。 前後処理に問題がないか見直してみます。 >そもそもcdもlcdも使う必要ないのよね これについて、よろしければ教えていただけますでしょうか? それは、例えば STOR C:\aaa\bbb\file.txt のように、ファイルをパスごと指定してしまえば よいということでしょうか? プログラムではない、PUTコマンドなどではできるようですが プログラムではできないような気がしまして・・・。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

どんな実装しているのかわからないので 助言のしようがないわ。 とりあえずSocketで説明すると サーバ上のファイルをSocket#getInputStreamで取得したら あとは単純にOutPutStreamでローカルに書き出すだけよ。 lcdの機能を実装するのなら 設定されたlcdを変数にでも格納しておけば FileOutputStreamで指定する出力先に lcdで指定された対象を選ぶだけね。

kw119yk
質問者

お礼

お返事ありがとうございます。 拙い説明で申し訳ありません。 ソースは以下のように作っているのですが // 接続 ctrlSocket = new Socket(host, CTRLPORT); localHostAddress = ctrlSocket.getLocalAddress().getAddress(); ctrlOutput = new PrintWriter(ctrlSocket.getOutputStream()); ctrlInput = new BufferedReader(new InputStreamReader(ctrlSocket.getInputStream())); // ユーザー認証 ctrlOutput.println("USER " + loginName); ctrlOutput.flush(); ctrlOutput.println("PASS " + password); ctrlOutput.flush(); // 指定したディレクトリに移動します ctrlOutput.println("CWD " + dirName); ctrlOutput.flush();      ・      ・      ・ ここで ctrlOutput.println("lcd " + dirName); ctrlOutput.flush(); のようにすればよいということでしょうか?

関連するQ&A

  • FTPコマンドについて

    OSは2000Serverを使っています。コマンドプロンプトから入力するFTPコマンドにつき、二つ質問があります。 (1)ローカル(自分の端末)のあるディレクトリ配下すべてのディレクトリ・フォルダまるごとをFTPでアップロードしたい際、コマンドでなんと入力すればよろしいですか? (mput *ではすべてのファイルを転送するもののディレクトリは転送しないためmkdirでディレクトリを作成し、それぞれにmputするということしかできないのでしょうか?) (2)ログインするとC:に自分がいます。!dirでC直下のディレクトリを見るとたくさんありますが中でもDocuments and SettingsとProgram Filesについてはlcdで場所を移動できません。デスクトップにあるファイルを転送したいときなど、Documents and Settingsの下にいく必要がありますがどうすれば移動できますか?

  • FTPのエラーメッセージで質問です。

    FTPでエラーメッセージについて質問です。 UNIX上でFTPコマンドを発行するのですが、 open localhost user aaa bbb でログインした後、以下の2つのコマンドを発行します。 sssというディレクトリはありません。 lcd sss cd sss ftp> lcd sss sss: ファイルもディレクトリもありません。 ftp> cd sss 550 sss: No such file or directory. となり、英語と日本語が混在してしまいます。 シェルでは、エラーメッセージの一部をgrepして トラップさせているのですが、日本語もあるためうまくいきません。 そこで、export LANG=ja_JP.UTF-8 だったのを export LANG=C に変えたところ ftp> lcd sss sss: No such file or directory ftp> cd sss 550 sss: No such file or directory. となり英語になりました。 そこで質問です。 (1)LANG=UTF8にしてる時、cd sss は何故lcd sssのエラーと異なり  英語なのでしょうか。 (2)cd sssは550のコードを返すのに何故 lcd sssはコードを  かえさないのでしょうか。 ご教示ください。

  • JAVAにFTP転送をサポートしているクラスはありますか

    この度、JAVAでFTP送信を行うプログラムを開発することになりました。私自身がプログラムを開発する訳ではありません。又、私自身はJAVAについてはよく知りません。というのが前提です。 指定されたファイルを指定されたIPアドレスへFTP送信するプログラムをJAVAで作る場合、FTP送信をサポートしているクラスはJAVAにあるのでしょうか。イメージとしては、そのクラスを呼び出して、FTPコマンドのPUTコマンドに相当するようなメソッドを呼び出せれば良いと考えています。又、転送エラーが発生した場合のエラーのハンドリングは必須です。ちなみに、C言語では、私が調査した結果では、そのようなクラス(API)はないので、ソケットライブラリでFTPプロトコルに従って一からの作り込みとなります。本件の質問の意図はJAVAでFTP転送のプログラムを開発する時の作業量を見積もっておきたい為です。(FTP転送のクラスがあれば、簡単に開発できるが、なければそれなりの作業量が発生すると考えています)

    • ベストアンサー
    • Java
  • telnetでFTPでファイルをアップロードしたいのですが

    telnetでFTPでファイルをアップロードしたい のですが、どうしても、そんなファイルは存在 しませんとでてしまいます。 これは、どういう風に送りたいファイルを記述 すればいいのでしょうか? ftp>send 送りたいファイル 送りたいファイルがDドライブの中のaaaという所 にあり、その中にあるCGIをFTPでアップ したいのです。 それは、コマンドプロンプトで指定してあげたい のですが、ローカル部分をどう記述していいのか わかりません。 教えて下さい。

  • perlでFTP

    ローカルPCからPerlで記述されたプログラムを実行し、 FTPサーバーへファイルをアップロードするPerlプログラムを教えてください。 DOS上では、 ftp open ftpサーバー名 ユーザー名 パスワード put 送信するファイル bye となるのですが、それをPerlで記述すると、どのようになるのでしょうか?

    • ベストアンサー
    • Perl
  • FTPによるファイル取得について

    一定の間隔であるサーバに接続し、画像ファイルを取得するプログラムを作成しています。 C言語で作成されたプログラムより、以下のようなシェルを実行し、画像ファイルを取得することを考えています。 ----------------------------- #!/bin/sh ftp -in <<EOL open 接続先IPアドレス user ユーザ名 パスワード lcd ローカルのディレクトリ cd リモートのディレクトリ mget data[ABC]_${d}.tar.gz quit EOL ----------------------------- ここで、以下のような問題に悩んでいます。 1.上記シェルを実行し、まさにFTPを行っているとき、LAN断などにより遠隔サーバとの接続が切れたときに、だんまり状態となってしまう。 2.FTPが成功した場合、取得したファイルの正当性が保証されるのか?せめてファイルサイズチェックだけでも行いたいが、FTP実行前にファイルのサイズが取得できるか?

  • ftpの操作について・・・

    最近コマンドをいじるようになりましたが、 ftpでどうもつまづいています。 詳しい方がいましたら、いくつかまとめてお聞きしたいです。 最近ホームページを作ろうと思いまして、日々ftpの努力を致しております。 よろしくお願いします。 質問 (1) ftp時のputコマンドについて、 送り先のフォルダー(ディレクトリー)を指定できないのですか? ftp>put index.html /web 200 PORT command successful 550 /web: Not a regular file と言うエラーになる。 エラー内容 : 要求されたリクエストはアクセス権限やファイルシステムの理由で実行できない ※ほかに何か指定して、使うのですか? (2)ftp時、> が無い時は何を意味しているのですか? たとえば、 ftp>227   (IP) _  ←(ここ) cat時などは、ファイルの内容を書くと思いますが、 使い方が解らないときがあります。 良かったらよろしくお願いします。 (3)webで検索をかけると、ftp時に、LISTやモードを切り替える、passive など、いろんなコマンドがあるのですが、使おうとすると「コマンドが無効です。」 と出たりするのはなぜですか? ※コマンドプロンプトで検索して、?やHelpに無いコマンドで説明してあったりする。 よろしくお願いします。

  • FTPのPUTコマンドについて

    例:PUT D:\FTPDIR\TEST FTPの上記のコマンドについて質問があります。 (1)ローカル側のD:\FTPDIR配下のTESTというファイルを、  リモート側にアップロードするという意味で合っていますでしょうか? (2)PUTでリモート側にアップロードしたファイルは、  特に何も指定していない場合、通常どのパスにアップロードされますか?  また、どこにアップロードされたかはログか何かで分かりますか?

  • FTPの連続実行でフリーズする

    UNIX + Cで作成しています。 あるプログラムで、FTPコマンド※を発行し、 遠隔のサーバ(サーバはLINUX)に置かれているファイルを取得しようとしています。 ※system("FTP ~~~ bye") 単発でファイルを取得する場合は問題ないのですが、 連続してファイルを取得しようとした場合、数時間動きつづけた後、 FTPコマンドを発行した状態でフリーズしてしまう現象が起こります。(100%かは分かりませんが、再現性はあります。) なぜこのような現象が起こるのでしょうか? 連続してのFTPコマンド発行は問題があるのでしょうか?

  • ftpコマンドの戻り値をチェックしたい

    現在業務でftpコマンドを用いたバックアップシェルを作成しております。(RHEL4) クーロンでシェルAを呼び、シェルA内でftpコマンド発行→ファイルB内のftpコマンドを実行→シェルAに戻る、という仕様ですが、このftpコマンドが成功したのか失敗したのかをプログラム上で判断する方法はありますでしょうか?

専門家に質問してみよう