2012-05-09 3 views
3

Apache(commons-net)が提供するFTPライブラリを使用しています。Javaでのリモートパスへの結合

ftpClient.listFiles(remoteFileDir + "\\" + fileName); 

現在のディレクトリがFTPサーバーのルートディレクトリである:私はFTPClientlistFilesメソッドを使用して、ファイルをFTPサーバー上に存在するかどうかを確認します。したがって、remoteFileDirの値は、このルートディレクトリに関連するパスです。

私の質問は、リモートディレクトリパスとファイル名のマージに関するものです。それを行う正しい方法は何ですか?ローカルファイルの場合、私はどうなる:

File file = new File(remoteFileDir,fileName); 

が、私はfile.getAbsolutePath()を呼び出すときに、私は私が望むものではありませんローカルカレントディレクトリにあるファイルの絶対パスを取得するため、ここではそれが動作しませんが。また、私のローカル環境に合わせてマージが行われていると思います。

PS:私はHow are paths determined on a remote machines?を見ましたが、それは私を助けません。

ありがとうございます。

+0

解決する問題は何ですか? Fileオブジェクトを使ってローカルファイル以外のものを表現することは、間違いなくnoです。しかし、\\またはchangeWorkDirメソッドを使用している場合 - なぜ迷惑でしょうか? – LordDoskias

+0

@LordDoskias私の場合は\\を使いますが、他のFTPサーバーはどうですか?それはまだ動作しますか? changeWorkingDirectoryメソッドに関して、私はそれを発見したばかりですが、他の開発者が何を考えているか聞いてみたいと思います。 –

+3

"/"を使用することをお勧めします。 – LordDoskias

答えて

1

FTPClientのメソッドchangeWorkingDirectoryが見つかりました。

ftpClient.changeWorkingDirectory(remoteFileDir); 
FTPFile[] names = ftpClient.listFiles(fileName); 

この場合、区切り文字を指定する必要はありません。

関連する問題