0

名前と拡張子に基づいてファイルを並べ替える必要があります。そのために apache commons-io RegexFileFilter を使用します。ファイル名のパターンは、「filename.xml.20130101200」または「filename.xml.20130101200.inprog」のようなもので、数字は単純なタイムスタンプです。

FileFilter regexFilter = new RegexFileFilter( ".*\\d{12}|.*inprog" );
File[] suitableFiles = dir.listFiles( regexFilter );

これらのファイルを含むこのディレクトリが私のホーム ディレクトリ "/home/user/files" にある場合、jboss で実行するとすべて正常に動作します。しかし、フォルダーを「/tmp/files/」に変更すると、フィルターは「.inprog」拡張子のファイルを検索します。ディレクトリにファイルの数を記録すると、正しい量が表示されます。テスト用に簡単なメイン プログラムを作成しましたが、ファイルが /tmp/files にある場合でも、すべて正常に動作します。Jboss は、私のホーム フォルダーにあります。

何が問題なのですか?

4

1 に答える 1

0

問題は正規表現にありました。正規表現文字列は oracle db テーブルから取得されました。「.*\d{12}| .inprog」に変更し、バックスラッシュを1つ削除すると、機能し始めました。また、「. [0-9]{12}|.*inprog」も正しく動作します

于 2013-03-06T15:29:22.350 に答える