1

(FIFOの原則)のファイルに対していくつかの操作を実行するために、Javaで最初に最も古いものとしてディレクトリ内のファイルをソートしたいと思います。このために、私は各ハエオブジェクトでlastmodifiedメソッドを使用し、次にコンパレータを介してそれらをコマッピングします。これにより、以下のようなソートされたリストが得られます。

    public static ArrayList<File> sortListAscending(ArrayList<File> list) {
    Collections.sort(list, new Comparator<File>() {
        public int compare(final File o1, final File o2) {
            return new Long(((File) o1).lastModified()).compareTo(new Long(
                    ((File) o2).lastModified()));
        }
    });
    return list;
}

これをWindowsで実行すると、13桁のタイムスタンプが返されますが、UNIXではタイムスタンプはミリ秒までではありません。したがって、上記の方法は、その1秒の時間枠でディレクトリに入ったファイルのUNIXで失敗します。

回避策を提案してください。

4

1 に答える 1

0

私のUbuntuマシンでは、タイムスタンプは13数字で返されます。ミリ秒。Linuxマシンでシステムクロックが正しく設定されているかどうかを確認できますか。

したがって、数秒で比較を適用できます。

long lastModified1 = (o1.lastModified()/1000)
long lastModified2 = (o2.lastModified()/1000)

return Long.valueOf(lastModified1).compareTo(lastModified2);
于 2012-09-07T10:06:08.030 に答える