web-dev-qa-db-fra.com

Comment trier les fichiers d'un répertoire par date en java?

J'ai une méthode qui lit le contenu de fichiers situés dans un répertoire. Mais pour des raisons fonctionnelles, il est nécessaire de commencer par le fichier le plus ancien (indiqué par la propriété lastmodified) et de terminer par le fichier le plus récent.

C'est le code comment j'ouvre et lis les fichiers:

        FilenameFilter filter = new FilenameFilter() {
        public boolean accept(File dir, String name) {
            return name.matches("access_log.*");
        }
    };

    File folder = new File("/home/myfiles");
    File[] listOfFiles = folder.listFiles(filter);

    for (int i = 0; i < listOfFiles.length; i++) {
        String sFileName = listOfFiles[i].getName();
        File accessLogFile = new File(aLog.getPath(), sFileName);
        long time=accessLogFile.lastModified();
        // do something with the file
    }

Quelqu'un a-t-il une solution pour trier rapidement ma liste de fichiers par date?

18
Ralph

Edit: En Java8:  

Arrays.sort(files, (a, b) -> Long.compare(a.lastModified(), b.lastModified()));link

J'ai trouvé du code intéressant, très proche de ce dont vous avez besoin, jetez-y un coup d'oeil (Juste une rapide mise en oeuvre de Comparator):

File f = new File("/home/myfiles");

File [] files = f.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;
        }
    }

}); 

Vous pouvez également consulter ce message pour voir comment le gars a résolu le problème: Le meilleur moyen de répertorier les fichiers en Java, triés par date de modification?

37
sfrj

Votre meilleure option est d'utiliser un comparateur. Il existe une question similaire et une réponse ici ... Le meilleur moyen de répertorier les fichiers en Java, triés par date de modification?

3
Ben

J'utiliserais FileUtils dans commons-io pour récupérer la collection de fichiers. J'appliquerais alors un comparateur personnalisé. Cela devrait être assez facile.

0
javamonkey79