Java:aix中文件lastmodified itimestamp

Java:aix中文件lastmodified itimestamp,java,file,Java,File,我想将目录中的文件排序为java中最早的文件,以便在(FIFO原则)中对文件执行一些操作。 为此,我在每个flie对象上使用lastmodified方法,然后通过一个比较器对它们进行比较,该比较器给出如下所示的排序列表 public static ArrayList<File> sortListAscending(ArrayList<File> list) { Collections.sort(list, new Comparator<File>

我想将目录中的文件排序为java中最早的文件,以便在(FIFO原则)中对文件执行一些操作。 为此,我在每个flie对象上使用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;
}
公共静态ArrayList排序(ArrayList列表){
Collections.sort(list,newcomparator(){
公共整数比较(最终文件o1,最终文件o2){
返回新长(((文件)o1.lastModified())。比较到(新长(
((文件)o2.lastModified());
}
});
退货清单;
}
当我在windows上运行此操作时,返回了一个13位的时间戳,而在unix中,时间戳不超过毫秒。 因此,对于在这一秒时间内进入目录的文件,上述方法在unix中失败


请建议一些解决方法?

在我的
Ubuntu上
机器时间戳以
13
位返回,即毫秒。能否检查linux机器上的系统时钟设置是否正确

因此,您可以在几秒钟内应用比较

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

return Long.valueOf(lastModified1).compareTo(lastModified2);

您需要使用一些附加信息,例如文件名或目录中的原始位置。@PeterLawrey感谢您的回复,因此按照您的建议包括文件名。那么我是否应该按照文件名中的特定模式(例如字母顺序)并检查其顺序?是,如果文件名中有细节没有记录在第二个时间戳中。谢谢Peter,我认为这只是最后的解决办法。作为aix的新手,我仍然很困惑,如果系统不将上次修改的时间戳存储到毫秒,那么ls-lt怎么会产生有效的结果呢,它们很可能按照您添加它们的顺序出现,看起来很正确。您好,amit,aix中返回的时间戳也是13位数字,但每个文件的最后3位数字始终为0。您能否确保文件修改的时间戳在您的情况下具有有效的毫秒值?因此,您可以通过舍入它来忽略以毫秒为单位的比较。我使用的方法仍然适用于comapring秒,因此我只担心相同秒数的文件。:-)