• 締切済み

FTPプログラムについて

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

みんなの回答

  • 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