Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据android中的创建日期对文件进行排序_Android_File - Fatal编程技术网

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

根据android中的创建日期对文件进行排序,android,file,Android,File,我想要基于我的创建日期的文件列表。 当我更新任何if图像并尝试检索所有图像时,顺序会随机更改 这是我的密码 File[] files = parentDir.listFiles(); for (File file : files) { // I am getting files here } 有什么帮助吗?试试这个可能对你有帮助 public static void main(String[] args) throws IOException { File direc

我想要基于我的创建日期的文件列表。 当我更新任何if图像并尝试检索所有图像时,顺序会随机更改

这是我的密码

 File[] files = parentDir.listFiles();
    for (File file : files) {
// I am getting files here
    }
有什么帮助吗?

试试这个可能对你有帮助

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());
    }
}
List fileList=new ArrayList();
Collections.sort(fileList,newcomparator(){
@凌驾
公共int比较(文件file1、文件file2){
长k=file1.lastModified()-file2.lastModified();
如果(k>0){
返回1;
}else如果(k==0){
返回0;
}否则{
返回-1;
}
}
});
我想要基于我的创建日期的文件列表

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

file.lastModified()
但修改日期会更新,例如在重命名文件的瞬间。因此,这不适用于表示创建日期

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


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

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;
        }
    }

});
File[]files=parentDir.listFiles();
Arrays.sort(文件,新的Comparator(){
公共整数比较(对象o1、对象o2){
如果(((文件)o1.lastModified()>((文件)o2.lastModified()){
返回-1;
}else if(((文件)o1.lastModified()<((文件)o2.lastModified()){
返回+1;
}否则{
返回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
}
private fun getListFiles(parentDir:File):可变列表{
val inFiles:MutableList=parentDir.listFiles().toMutableList()
inFiles.filter{it.extension==“jpg”}
inFiles.sortByDescending({it.lastModified()})
返回填充
}

伙计们,如果您无法解决此
LastModifiedFileComparator
问题,以下是我找到的解决方案

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

步骤2
如果它不起作用,则在应用程序级别
build.gradle中添加
mavenCentral()
创建新的
存储库

repositories{
   mavenCentral()
}
dependencies {
//all implementation

所有这些都应该像魅力一样工作,如果没有,请参阅此处。将此添加到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);

按更改日期对文件数组进行排序的一种快速而优雅的方法是:

        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(文件列表,新的比较器(){
@凌驾
公共整数比较(文件f1、文件f2){
返回Long.compare(f1.lastModified(),f2.lastModified());
//下降
//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);
            }
        });
Arrays.sort(文件列表,新的比较器(){
@凌驾
公共整数比较(文件f1、文件f2){
返回f1.compareTo(f2);
//下降
//返回-f1。与(f2)比较;
}
});

我已尝试过此代码。我尝试过重命名图像,在这种情况下,我再次失去了我原来的顺序。最新重命名的图像排在最后。注意,
LastModifiedFileComparator
在Apache的公共IO中可用。
        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);
            }
        });