ftp – こみなのメモ帳 / 趣味と実益のネタ帳 Wed, 18 Dec 2019 07:56:37 +0000 ja hourly 1 https://wordpress.org/?v=6.1.1 FTPClient.listFilesで更新日時の秒が取得できない問題 /archives/105/ /archives/105/#respond Wed, 18 Dec 2019 07:56:37 +0000 https://www.komina.info/?p=105 javaでapache.commonsのFTPClientを使ってFTPしているときの話。

リモートのディレクトリ内のファイル更新日時を取得しようとして、FTPClient.listFiles()メソッドを使うと秒が0で取得されてしまう。
これはlistFiles()メソッドがLISTコマンドを使用していることに起因しているそうで。FTPサーバはUNIXのLSコマンドと同様のリストを返すことがあり、その際に更新日時の精度が欠落してしまうということのようです。

そこで常に秒までの精度で更新日時を返すMLSDコマンドを用いる、mlistDir()メソッドを使用する。(もちろんFTPサーバでMLSDコマンドをサポートしている必要がある)

mlistDir()メソッドは、commons-net-3.0以降から使えるようだ。
FTPサーバがMLSDMLSTをサポートしていない場合は、ファイル名を取得した後、個別に.getModificationTime(name)メソッドで更新日時を取得することになる。おそらく。GMTで取得されるので変換が必要。

参考

]]>
/archives/105/feed/ 0