How to Sort List of Files based on Last Modified Time in Ascending and Descending?

Last updated
App Shah

Crunchify » Java and J2EE Tutorials » How to Sort List of Files based on Last Modified Time in Ascending and Descending?

Sort List of Files based on Last Modified Time in Ascending and Descending

The LastModifiedFileComparator.LASTMODIFIED_COMPARATOR and LastModifiedFileComparator.

LASTMODIFIED_REVERSE Comparator singleton instances in the Apache Commons IO library can be used to sort arrays or collections of files according to their last-modified dates.

Apache Commons IO Example

Please follow below steps:

  • You need to add commons-io-2.6.jar file into your Java Project’s class path.
  • If you are on Mac OS X then you need to create a temp folder under Downloads, i.e.  /Users/<username>/Downloads/CrunchifyTest
  • Create two files Crunchify_Test1.txt and Crunchify_Test2.txt

If you have maven project then add below pom.xml maven dependency.

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

Here is a complete Java Program:

package com.crunchify.tutorials;

import org.apache.commons.io.comparator.LastModifiedFileComparator;
import java.io.File;
import java.util.Arrays;
import java.util.Date;

/**
 * @author crunchify.com
 * 
 */

public class CrunchifySortFileLastModifiedTime {
	public static void main(String[] args) {
		File dir = new File("/Users/<username>/Downloads/CrunchifyTest");
		File[] files = dir.listFiles();

		System.out.println("Sort files in ascending order base on last modification date");

		Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_COMPARATOR);
		for (int i = 0; i < files.length; i++) {
			File file = files[i];
			System.out.printf("File: %s - " + new Date(file.lastModified()) + "\n", file.getName());
		}

		System.out.println("\nSort files in descending order base on last modification date");

		Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
		for (int i = 0; i < files.length; i++) {
			File file = files[i];
			System.out.printf("File: %s - " + new Date(file.lastModified()) + "\n", file.getName());
		}
	}
}

Other must read:

Output:

Here is an Eclipse Console result. Just run it as a Java Application.

Sort files in ascending order base on last modification date
File: Crunchify_Test1.txt - Fri Jul 05 10:24:08 PDT 2013
File: Crunchify_Test2.txt - Fri Jul 05 10:25:03 PDT 2013

Sort files in descending order base on last modification date
File: Crunchify_Test2.txt - Fri Jul 05 10:25:03 PDT 2013
File: Crunchify_Test1.txt - Fri Jul 05 10:24:08 PDT 2013

Let me know if you find better ways to sort list of files via comment below.

Leave a Comment