- - PR -
FTPコマンドの「lcd」に相当するFTPコマンドは?
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-07-08 16:04
Socket を使って、FTPクライアントを作っているのですが、
コマンドラインからFTP接続した時の「lcd」に相当するコマンドは何を送ればよいのでしょうか? もしかして、ローカルのカレントディレクトリにダウンロードしてきて、 Runtime#exec で 「mv」処理するしかないのでしょうか? | ||||
|
投稿日時: 2004-07-08 17:14
そのFTPクライアントの仕様次第だと思うんですが、カレントディレクトリの情報を持って
いないのでしょうか。持っているのであれば、そのカレントディレクトリを変更するだけ だと思うのですが。 | ||||
|
投稿日時: 2004-07-08 17:39
ukさん、ご返信ありがとうございます。
一応、処理のはじめに String bashCmd = "bash -c \"cd " + prop.getProperty("FTPDIR_LOCAL") + "\""; Process process = Runtime.getRuntime().exec(bashCmd); を入れて、ダウンロードされるローカルディレクトリを指定しているのですが、ダメでした。 プログラムが実行されているカレントにダウンロードされてきます。 よく分からないです。。。 | ||||
|
投稿日時: 2004-07-08 18:06
作ったFTPクライアントで、取得したファイルを書き込むときに、
フルパスで書き込み先を指定してあげれば良いのではないですか? | ||||
|
投稿日時: 2004-07-08 18:07
こ、これはムリです。カレントディレクトリというのはプロセス毎の属性ですから、新たにforkされたbashのカレントディレクトリが変わるだけで、その親であるJVMには影響がありません。 というわけでFTPクライアントソフトが、自前で「カレントディレクトリ」という概念を管理すれば良いんじゃないでしょうか。 つまり覚えておくわけです。今どこをカレントディレクトリと扱うのか。で、ダウンロードするときは「今自分がカレントディレクトリだと思っているところ」へダウンロードすればよいでしょう。 | ||||
|
投稿日時: 2004-07-08 18:09
これでは、Runtime#execで生成される子プロセスのカレントディレクトリが変わるだけです。 子プロセスはcdコマンドを実行しただけで終了するので、何もしていないのと同じです。 そもそも「ダウンロード」の処理をどのように実行しているのでしょうか? ソケットを使っている、とのことなので自力でFTPサーバとやりとりしているのかと思って いましたが… まず、そこから書いてみてください。 | ||||
|
投稿日時: 2004-07-08 18:25
みなさん、ご返信ありがとうございます。
Runtime#exec() は子プロセスを作るだけですので、無理ですね。 書き出すファイル名を指定する時に、ディレクトリを追加してやれば良かった訳ですね。 早速、やってみます。 | ||||
1
