Jakarta Commons NET のFTPClientについて質問です(Javaの質問です)。


FTPClientでPutした時に、転送先のディレクトリが無い場合、エラーになってしまうので、転送する前にディレクトリを作成する必要があって、そのことについて質問です。

FTPClientに、makeDirectoryメソッドがありますが、
これは、2階層以上同時にディレクトリを作ることはできますか?

個人的に試したのですが、1階層では作成できますが、
2階層だとエラーになります。
これは、仕様なのか、私のやり方が悪いのか分からなかったので教えて下さい。

仮に、2階層作成するのができない場合、ディレクトリ(例foo/bar)を/で区切って、1階層作成して、そこに移動、また1階層ディレクトリを作成を繰り返すという方法が一般的でしょうか?

makedirectoryを便利にラップしたメソッドがあれば教えて下さい。

また、makedirectoryは、既にディレクトリがある状態で実行するとエラーになりますが、
転送先にディレクトリがあるかどうか調べる方法があれば教えて下さい。(Fileクラスのexistsメソッドのような)

たくさんの質問で申し訳ないですが、よろしくお願いします。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2007/12/10 00:30:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:KUROX No.1

回答回数3542ベストアンサー獲得回数140

ポイント60pt

http://commons.apache.org/net/api/org/apache/commons/net/ftp/FTP...

>FTPClientに、makeDirectoryメソッドがありますが、

>これは、2階層以上同時にディレクトリを作ることはできますか?

たぶん、できない。

http://akky.cjb.net/mfc/makedir.html

こんな感じで、自前で作ってしまうほうが早いかと。

>仮に、2階層作成するのができない場合、ディレクトリ(例foo/bar)を/で区切って、

>1階層作成して、そこに移動、また1階層ディレクトリを作成を繰り返すという方法が一般的

>でしょうか?

たぶんYES。

>転送先にディレクトリがあるかどうか調べる方法があれば教えて下さい

public String getStatus(String pathname)

とか使ってみても無理ですか?

なければ、ファイル一覧を取得して存在チェックするメソッドを作るとか。

id:nemutaiyo

KUROXさんいつもありがとうございます。

>たぶん、できない。

やはりそうですか。。URLを参考に自作します。

>public String getStatus(String pathname)

戻りがStringで、どんな文字列が返ってくるか不明なので敬遠してました。

調べて見ます。だめなら、ファイル一覧取得して調べます。(最悪、MKDがエラーになってもFTP自体は落ちないので、そのままにすることも検討。ただし最後の手段)

その他、分かったことは、FTPサーバーによっては、設定しだいで複数階層作ることもできるみたいです。

2007/12/04 00:22:34

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません