Home » Core Java » util » Comparator » DefaultFileComparator » org.apache.commons.io.comparator.DefaultFileComparator Example

About Prasad Saya

Prasad Saya
Prasad Saya is a software engineer with over ten years’ experience in application development, maintenance, testing and consulting on various platforms. He is a certified Java and Java EE developer. At present his interest is in developing Java applications. He also has experience working with databases and ERP applications.

org.apache.commons.io.comparator.DefaultFileComparator Example

Apache Commons IO is a library of utilities to assist with developing IO functionality. org.apache.commons.io.comparator package provides various Comparator implementations for Files. DefaultFileComparator is one of the classes.

This class can be used to sort lists or arrays of files (File objects) by using the default file comparison. This article shows usage of this class.

The class is from Apache Commons IO 2.4. Note the commons-io-2.4.jar file is required in the classpath to compile and run the example. This library can be downloaded from the Apache Commons website.

The example is tested on Windows operating system. The Apache Commons IO 2.4 API usage requires Java SE 6 or greater.

1. An Example

This example shows the usage of the two sort methods. The methods take an array or a List collection of File objects, sort them and return the sorted File array or List respectively.

The program takes three directories with files as input File objects. These file objects are copied to an array as well as a List of type File. Then the array and list are sorted using the DefaultFileComparator class’s two sort methods respectively.

Note that real directories and files are required to run the example.

2. The Code

Example.java

import org.apache.commons.io.comparator.DefaultFileComparator;
import java.io.File;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

public class Example {

    private static DefaultFileComparator dfc = new DefaultFileComparator();

    public static void main(String [] args) {

        System.out.println("Three input directories:");

        File dir1 = new File("X:\\testdir\\src\\");
        File [] ff1 = dir1.listFiles();
        printArrayContents(ff1);
		
        File dir2 = new File("X:\\testdir\\classes\\");
        File [] ff2 = dir2.listFiles();
        printArrayContents(ff2);
		
        File dir3 = new File("X:\\testdir\\deploy\\");
        File [] ff3 = dir3.listFiles();
        printArrayContents(ff3);
		
        // add all dir files to a list
		
        List<File> fileList = new ArrayList<File>();
        Collections.addAll(fileList, ff1);
        Collections.addAll(fileList, ff2);
        Collections.addAll(fileList, ff3);
		
        // make a copy to an array
		
        System.out.println("All files before sort:");		
        File [] fileArray = new File [fileList.size()];
        int i = 0;
		
        for (File file : fileList) {
		
            System.out.println(file);
            fileArray [i++] = file;
        }
		
        System.out.println("");
		
        // sort the array
        System.out.println("Array sorted:");
        fileArray = dfc.sort(fileArray)
        printArrayContents(fileArray);
			
        // sort the list
        System.out.println("List sorted:");
        fileList = dfc.sort(fileList);
        printListContents(fileList);
    }

    private static void printArrayContents(File [] files) {
		
        for (File file : files) {
            System.out.println(file);
        }
		
        System.out.println("");
    }

    private static void printListContents(List<File> files) {
		
        for (File file : files) {
            System.out.println(file);
        }
    }
}

3. The Output

The three input directories:

X:\testdir\src\a.java
X:\testdir\src\b.java

X:\testdir\classes\a.class
X:\testdir\classes\b.class

X:\testdir\deploy\a.class
X:\testdir\deploy\b.class
X:\testdir\deploy\install.txt

All files before sort:
X:\testdir\src\a.java
X:\testdir\src\b.java
X:\testdir\classes\a.class
X:\testdir\classes\b.class
X:\testdir\deploy\a.class
X:\testdir\deploy\b.class
X:\testdir\deploy\install.txt

Array sorted:
X:\testdir\classes\a.class
X:\testdir\classes\b.class
X:\testdir\deploy\a.class
X:\testdir\deploy\b.class
X:\testdir\deploy\install.txt
X:\testdir\src\a.java
X:\testdir\src\b.java

List sorted:
X:\testdir\classes\a.class
X:\testdir\classes\b.class
X:\testdir\deploy\a.class
X:\testdir\deploy\b.class
X:\testdir\deploy\install.txt
X:\testdir\src\a.java
X:\testdir\src\b.java

From the output:

  • The three input directories: This shows the files in the three directories src, classes and deploy in the X:\testdir\.
  • All files before sort: The three sets of File objects are copied to an array as well as a List of type File.
  • Array sorted: This has the File objects sorted. Note the src, classes and deploy directory order is changed after the sort.
  • List sorted: The sorting is similar to that of the array sorting.

4. Download Java Source Code

This was an example of org.apache.commons.io.comparator.DefaultFileComparator.

Download
You can download the full source code of this example here: Example.zip
(No Ratings Yet)
Start the discussion Views Tweet it!

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!

 

1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design

 

and many more ....

 

Receive Java & Developer job alerts in your Area

 

Leave a Reply

avatar
  Subscribe  
Notify of