如何使用日期对目录中的文件和文件夹进行排序 [英] How can I sort files and folders in a directory using their date

查看:73
本文介绍了如何使用日期对目录中的文件和文件夹进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hey Guys,



我正在寻找一个代码,我可以根据日期和名称对目录中的文件和文件夹(特别是文件)进行排序。就像假设我想先根据以S开头的名字对文件进行排序。之后,我想根据日期再次对这些已排序的文件进行排序。因此,我每天都可以获得相同日期的文件。



直到现在我已经根据他们的名字对文件进行了排序。但是如何根据日期排序文件,我无法理解。你能帮我一个示例代码吗?

我在下面的部分附上我的代码。



我有什么试过:



包数;

import java.io. *;

import java .util.ArrayList;

import java.util.List;



公共类Newcount2 {



public static void main(String [] args){

List< string> files = new ArrayList<>();

List< string> directories = new ArrayList<>();

List< string> smallScount = new ArrayList<>();

List< string> capScount = new ArrayList<>();



文件夹=新文件(目录路径);

文件[] listOfFiles = folder.listFiles();



for(int i = 0; i< listOfFiles.length; i ++){

if (listOfFiles [i] .isFile()){

files.add(listOfFiles [i] .getName());

} else if(listOfFiles [i]。 isDirectory()){

directories.add(listOfFiles [i] .getName());

}

}



//用大写字母S和小S划分文件。



System.out.println(带s和s的文件S.);

for(String file:files){

if(file.startsWith(s))

smallScount。 add(file);

if(file.startsWith(S))

capScount.add(file);

}



/ *系统。 out.println(文件列表:\ n ---------------);

for(String fName:files)System.out.println (fName);



System.out.println(\ n目录列表:\ n -------------- -------);

for(String dName:directories)System.out.println(dName); * /



/ * System.out.println(带有'S'的文件列表:\ n ---------------);

for (String fName:smallScount)System.out.println(fName); * /

/ *

System.out.println(具有Capital'S'的文件列表:\ n ---------------);

for(String fName:capScount)System.out.println(fName); * /



System.out.println(小'S'的文件数:\ n ---------------) ;

System.out.println(smallScount.size());



System.out.println(文件计数与资本'S':\ n ---------------);

System.out.println(capScount.size());



}

}

Hey Guys,

I am looking for a code in which I can sort files and folders (specifically files) in a directory based on their date and name. Like suppose i want to sort files based on their names starting with "S" first. After that I want to sort those sorted files once again based on their date. So that every day I can get the files of the same date.

Till now i have sorted files based on their names. But how to sort files based on their date, that i cant understand. Can you guys help me with a sample code?
I am attaching my code in the below section.

What I have tried:

package count;
import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Newcount2 {

public static void main(String[] args) {
List<string> files = new ArrayList<>();
List<string> directories = new ArrayList<>();
List<string> smallScount = new ArrayList<>();
List<string> capScount = new ArrayList<>();

File folder = new File("The directory Path");
File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
files.add(listOfFiles[i].getName());
} else if (listOfFiles[i].isDirectory()) {
directories.add(listOfFiles[i].getName());
}
}

//dividing the files with caps S and small S.

System.out.println("Files with s and S.");
for (String file : files) {
if(file.startsWith("s"))
smallScount.add(file);
if(file.startsWith("S"))
capScount.add(file);
}

/* System.out.println("List of files :\n---------------");
for(String fName: files) System.out.println(fName);

System.out.println("\nList of directories :\n---------------------");
for(String dName: directories) System.out.println(dName);*/

/* System.out.println("List of files with small 'S' :\n---------------");
for(String fName: smallScount) System.out.println(fName);*/
/*
System.out.println("List of files with Capital 'S' :\n---------------");
for(String fName: capScount) System.out.println(fName);*/

System.out.println("Count of files with small 'S' :\n---------------");
System.out.println(smallScount.size());

System.out.println("Count of files with Capital 'S' :\n---------------");
System.out.println(capScount.size());

}
}

推荐答案

使用数组。 sort()(参见 Arrays(Java Platform SE 7) [ ^ ])Comparator(Java Platform SE 7) [ ^ ]。



你可以执行在您的原始 listOfFiles 数组中排序或使用副本(如果必须保留)。



未经测试的示例区分文件和文件夹:

Use Arrays.sort() (see Arrays (Java Platform SE 7 )[^]) with a Comparator (Java Platform SE 7 )[^].

You can perform the sort on your orginal listOfFiles array or use a copy if that must be preserved.

Untested example which does not differentiate between files and folders:
Arrays.sort(listOfFiles, new Comparator<File>(){
    public int compare(File f1, File f2)
    { 
        // Names beginning with 's' on top
        boolean s1 = f1.getName().startsWith("s") || f1.getName().startsWith("S");
        boolean s2 = f2.getName().startsWith("s") || f2.getName().startsWith("S");
        if (s1 && !s2)
            return -1;
        if (s2 && !s1)
            return -1;
        // Everything else including both names beginning with 's' is sorted by date
        return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
    } });


这篇关于如何使用日期对目录中的文件和文件夹进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆