2012-05-09 9 views
0

私はCommons.IOのFileUtilsを使用しています。私はバックアップスクリプトを作成しようとしています。単純なルールは、存在しないすべてのファイル(およびサブディレクトリ)またはソースが他のものよりも新しい最終変更日を有するかどうかを判断する。Java FileUtilsはバックアップディレクトリをコピーします

FileUtils.copyDirectory()が正しいFileFilterを設定する方法よりも正しい選択かどうかはわかりません。

ありがとうございます。

+4

'rsync'はあなたが' Java'でやっていることをうまくやっています。それはオプションではありませんか? – Romain

+0

私はそのライブラリを知らなかった、あなたはそれが安定していると思いますか?もはや開発者ではないことがわかりました。 – Tobia

+1

http://rsync.samba.org/を参照してください。最後のリリースは2011年9月からのものですが、まだメンテナンスされており、広く使用されており、リファレンスと見なされています。 – Romain

答えて

0

FilenameFilterは、ファイルまたはディレクトリののという名前にのみ一致します。それは、別のツリーに存在することに基づいてアイテムを含めるかどうかの決定に役立つことはありません。しかし、copyDirectory()はあなたのニーズに合った適切な処理を行っているようです。変更されていないファイルをコピーから除外したい場合は、そのロジックを自分で追加する必要があります。 (すべてのレベルで日付比較が行われないようにしたい場合を除き、解決策は内部的にはcopyDirectory()を利用することができます)。

+0

FileFilterではなく、FileFilterを作成してsrcのファイルをdestのフォルダに入れてチェックする必要があるかもしれません。私はそれを行うことができますが、srcの絶対パスからdestファイルを探す必要があります。 ... – Tobia

0

@romainはrsyncの質問に彼のコメントで指摘していますファイル内の変更を含む)

これは、ファイルフィルタで取得したファイルと他のディレクトリ内の「同じ」ファイルを比較する必要があります。ファイルパスの上部を変更してチェックするだけです。

また、ファイルシステムのディレクトリトラバーサルに関するJava 7のI/Oの改善をよく見ているものについては、 Commons FileUtilsよりも優れたパフォーマンスを発揮します。

関連する問題