FileDocCategorySizeDatePackage
ExtensionFileComparator.javaAPI DocAndroid 1.5 API4960Wed May 06 22:42:46 BST 2009org.apache.commons.io.comparator

ExtensionFileComparator

public class ExtensionFileComparator extends Object implements Serializable, Comparator
Compare the file name extensions for order (see {@link FilenameUtils#getExtension(String)}).

This comparator can be used to sort lists or arrays of files by their file extension either in a case-sensitive, case-insensitive or system dependant case sensitive way. A number of singleton instances are provided for the various case sensitivity options (using {@link IOCase}) and the reverse of those options.

Example of a case-sensitive file extension sort using the {@link #EXTENSION_COMPARATOR} singleton instance:

List<File> list = ...
Collections.sort(list, ExtensionFileComparator.EXTENSION_COMPARATOR);

Example of a reverse case-insensitive file extension sort using the {@link #EXTENSION_INSENSITIVE_REVERSE} singleton instance:

File[] array = ...
Arrays.sort(array, ExtensionFileComparator.EXTENSION_INSENSITIVE_REVERSE);

version
$Revision: 609243 $ $Date: 2008-01-06 00:30:42 +0000 (Sun, 06 Jan 2008) $
since
Commons IO 1.4

Fields Summary
public static final Comparator
EXTENSION_COMPARATOR
Case-sensitive extension comparator instance (see {@link IOCase#SENSITIVE})
public static final Comparator
EXTENSION_REVERSE
Reverse case-sensitive extension comparator instance (see {@link IOCase#SENSITIVE})
public static final Comparator
EXTENSION_INSENSITIVE_COMPARATOR
Case-insensitive extension comparator instance (see {@link IOCase#INSENSITIVE})
public static final Comparator
EXTENSION_INSENSITIVE_REVERSE
Reverse case-insensitive extension comparator instance (see {@link IOCase#INSENSITIVE})
public static final Comparator
EXTENSION_SYSTEM_COMPARATOR
System sensitive extension comparator instance (see {@link IOCase#SYSTEM})
public static final Comparator
EXTENSION_SYSTEM_REVERSE
Reverse system sensitive path comparator instance (see {@link IOCase#SYSTEM})
private final IOCase
caseSensitivity
Whether the comparison is case sensitive.
Constructors Summary
public ExtensionFileComparator()
Construct a case sensitive file extension comparator instance.


                 
      
        this.caseSensitivity = IOCase.SENSITIVE;
    
public ExtensionFileComparator(IOCase caseSensitivity)
Construct a file extension comparator instance with the specified case-sensitivity.

param
caseSensitivity how to handle case sensitivity, null means case-sensitive

        this.caseSensitivity = caseSensitivity == null ? IOCase.SENSITIVE : caseSensitivity;
    
Methods Summary
public intcompare(java.lang.Object obj1, java.lang.Object obj2)
Compare the extensions of two files the specified case sensitivity.

param
obj1 The first file to compare
param
obj2 The second file to compare
return
a negative value if the first file's extension is less than the second, zero if the extensions are the same and a positive value if the first files extension is greater than the second file.

        File file1 = (File)obj1;
        File file2 = (File)obj2;
        String suffix1 = FilenameUtils.getExtension(file1.getName());
        String suffix2 = FilenameUtils.getExtension(file2.getName());
        return caseSensitivity.checkCompareTo(suffix1, suffix2);