根据android中的创建日期对文件进行排序

时间:2014-10-27 06:17:18

标签: android file

我想根据我的创建日期列出文件。 当我更新任何图像并试图检索所有图像时,订单会随机更改。

这是我的代码,

 File[] files = parentDir.listFiles();
    for (File file : files) {
// I am getting files here
    }

任何帮助..

8 个答案:

答案 0 :(得分:3)

    List<File> fileList = new ArrayList<File>();
    Collections.sort(fileList, new Comparator<File>() {

        @Override
        public int compare(File file1, File file2) {
            long k = file1.lastModified() - file2.lastModified();
            if(k > 0){
               return 1;
            }else if(k == 0){
               return 0;
            }else{
              return -1;
           }
        }
    });

答案 1 :(得分:3)

  

我希望根据我的创建日期列出文件。

如前两个答案所指出的,您可以根据修改日期对文件进行排序:

file.lastModified()

但修改日期已更新,例如在重命名文件的瞬间。因此,这不能代表创建日期。

不幸的是,创建日期不可用,因此您需要重新考虑您的基本策略:

see an old answer of CommonsWare

答案 2 :(得分:2)

试试这可能对你有帮助,

public static void main(String[] args) throws IOException {
    File directory = new File(".");
    // get just files, not directories
    File[] files = directory.listFiles((FileFilter) FileFileFilter.FILE);

    System.out.println("Default order");
    displayFiles(files);

    Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_COMPARATOR);
    System.out.println("\nLast Modified Ascending Order (LASTMODIFIED_COMPARATOR)");
    displayFiles(files);

    Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
    System.out.println("\nLast Modified Descending Order (LASTMODIFIED_REVERSE)");
    displayFiles(files);

}

public static void displayFiles(File[] files) {
    for (File file : files) {
        System.out.printf("File: %-20s Last Modified:" + new Date(file.lastModified()) + "\n", file.getName());
    }
}

答案 3 :(得分:2)

此处是用于根据修改日期对文件进行排序的代码,因为创建日期不可用。

File[] files = parentDir.listFiles();
Arrays.sort(files, new Comparator() {
    public int compare(Object o1, Object o2) {

        if (((File)o1).lastModified() > ((File)o2).lastModified()) {
            return -1;
        } else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
            return +1;
        } else {
            return 0;
        }
    }

});

答案 4 :(得分:0)

用Kotlin语言可以这样写:

private fun getListFiles(parentDir: File): MutableList<File> {

    val inFiles: MutableList<File> = parentDir.listFiles().toMutableList()

    inFiles.filter { it.extension == "jpg" }

    inFiles.sortByDescending({ it.lastModified()})

    return inFiles
}

答案 5 :(得分:0)

伙计们,如果您不能解决此LastModifiedFileComparator问题,这是我找到的解决方案。

第1步
打开应用级别build.gradle 并添加依赖项,如下所示。要获取更新的版本,请点击here

implementation group: 'commons-io', name: 'commons-io', version: '2.0.1'

第2步
如果不起作用,则可以在您的应用级别mavenCentral()

中添加repositories创建新的build.gradle
repositories{
   mavenCentral()
}
dependencies {
//all implementation

所有内容都应像魅力一样工作,如果没有,请在此处参考

答案 6 :(得分:0)

1。将此添加到build.gradle中:

    implementation group: 'commons-io', name: 'commons-io', version: '2.4'

2。向活动添加代码:

  File[] folderFiles = Files.listFiles();

  // Sort files in ascending order base on last modification
  Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_COMPARATOR);

  // Sort files in descending order base on last modification
  Arrays.sort(folderFiles, LastModifiedFileComparator.LASTMODIFIED_REVERSE);

答案 7 :(得分:0)

一种对文件数组进行排序的快速而优雅的方式,按日期的变化是:

        Arrays.sort(fileList, new Comparator<File>() {
            @Override
            public int compare(File f1, File f2) {
                return Long.compare(f1.lastModified(), f2.lastModified());
                // For descending
                // return -Long.compare(f1.lastModified(), f2.lastModified());
            }
        });

要对文件数组进行排序,按名称是:

        Arrays.sort(fileList, new Comparator<File>() {
            @Override
            public int compare(File f1, File f2) {
                return f1.compareTo(f2);
                // For descending
                // return -f1.compareTo(f2);
            }
        });