- - PR -
org.apache.commons.net.ftp.FTPClientのlistFileメソッドについて
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-08-14 00:13
>会社員さん
>ftpコマンドでls等動作はしますか? 動作しております。 >ちいにぃさん ftpクライアント側での対処を考えておりますので、 やはり、Parserを新規に作成してやる必要があるという事でしょうか・・・。 Parser自体のソースを見てみましたが、ソースの解析そのものに時間がかかりそうです。 (正規表現を直ぐには解読出来ないです。。) ふと思ったのですが、例えば「FFFTP」というフリーのツールでは、 サーバ側のファイルを更新日付を変えずにローカル側にダウンロードする事が出来ますが、 それをJavaで行えさえすれば、ローカルに落としてきた(更新日付が変更されていない)ファイルに対して Fileオブジェクトを作成し、lastModified() メソッドにて、更新日付を取得出来るのではないでしょうか? Javaでそういう事を行う方法はないものでしょうか? (現在のところ、Fileオブジェクトを作成した日付が、更新日付になってしまいます。) |
|
投稿日時: 2004-08-14 01:17
| ふと思ったのですが、例えば「FFFTP」というフリーのツールでは、
| サーバ側のファイルを更新日付を変えずにローカル側にダウンロードする事が出来ますが、 | それをJavaで行えさえすれば、ローカルに落としてきた(更新日付が変更されていない) | ファイルに対して | Fileオブジェクトを作成し、lastModified() メソッドにて、更新日付を取得出来るのでは | ないでしょうか? ffftp 1.91 (最新は 1.92ですが) で試してみたところ、 ファイルの「日付」は反映されたのですが、「時刻」は反映されていませんでした。 (00:00:00になる) パケットキャプチャして調べると、ファイルの日付は、ファイル一覧を「NLST -alL」 コマンドを発行して調べたときのものを使っているようです。このときに、試したftpサーバ (ProFTPD 1.2.9)の(少なくとも)現在の設定では時刻を返さないため、こうなるようです。 よって、ffftp は、1)ファイルの日付を得て、2)ファイル保存後にファイルの日付を 変更、の2段階を踏んでいると思います。 なので、結局、Commons NET で同じコトを実現するには、FTPClient#listFiles() などで、日付を取得する必要があるわけです。 なお、FTPClientクラスで「NLST -alL」を発行して、方法は調べていません。 FTPClient#listNames() は「NLST」を発行するだけですし。#listFiles() は 「LIST」を発行するだけですし。(FTPCommandクラスってのが合ったような気がします ので、コレが使えるかも知れませんが) また、より正確な日時(年月日時分秒にタイムゾーン付き)を調べるには「MDTM」 コマンドを使いますが、こちらも方法は調べていません。 (もっとも、ftpサーバによってはサポートしていない、と聞いたことがあるような) |
