Class ExtensionFileComparator

  • All Implemented Interfaces:
    java.io.Serializable, java.util.Comparator<java.io.File>

    public class ExtensionFileComparator
    extends java.lang.Object
    implements java.io.Serializable
    Compare the file name extensions for order (see 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 dependent case sensitive way. A number of singleton instances are provided for the various case sensitivity options (using IOCase) and the reverse of those options.

    Example of a case-sensitive file extension sort using the EXTENSION_COMPARATOR singleton instance:

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

    Example of a reverse case-insensitive file extension sort using the EXTENSION_INSENSITIVE_REVERSE singleton instance:

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

    Since:
    1.4
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      ExtensionFileComparator()
      Construct a case sensitive file extension comparator instance.
      ExtensionFileComparator​(IOCase caseSensitivity)
      Construct a file extension comparator instance with the specified case-sensitivity.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int compare​(java.io.File file1, java.io.File file2)
      Compare the extensions of two files the specified case sensitivity.
      java.io.File[] sort​(java.io.File... files)
      Sort an array of files.
      java.util.List<java.io.File> sort​(java.util.List<java.io.File> files)
      Sort a List of files.
      java.lang.String toString()
      String representation of this file comparator.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Comparator

        equals, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
    • Field Detail

      • EXTENSION_COMPARATOR

        public static final java.util.Comparator<java.io.File> EXTENSION_COMPARATOR
        Case-sensitive extension comparator instance (see IOCase.SENSITIVE)
      • EXTENSION_REVERSE

        public static final java.util.Comparator<java.io.File> EXTENSION_REVERSE
        Reverse case-sensitive extension comparator instance (see IOCase.SENSITIVE)
      • EXTENSION_INSENSITIVE_COMPARATOR

        public static final java.util.Comparator<java.io.File> EXTENSION_INSENSITIVE_COMPARATOR
        Case-insensitive extension comparator instance (see IOCase.INSENSITIVE)
      • EXTENSION_INSENSITIVE_REVERSE

        public static final java.util.Comparator<java.io.File> EXTENSION_INSENSITIVE_REVERSE
        Reverse case-insensitive extension comparator instance (see IOCase.INSENSITIVE)
      • EXTENSION_SYSTEM_COMPARATOR

        public static final java.util.Comparator<java.io.File> EXTENSION_SYSTEM_COMPARATOR
        System sensitive extension comparator instance (see IOCase.SYSTEM)
      • EXTENSION_SYSTEM_REVERSE

        public static final java.util.Comparator<java.io.File> EXTENSION_SYSTEM_REVERSE
        Reverse system sensitive path comparator instance (see IOCase.SYSTEM)
    • Constructor Detail

      • ExtensionFileComparator

        public ExtensionFileComparator()
        Construct a case sensitive file extension comparator instance.
      • ExtensionFileComparator

        public ExtensionFileComparator​(IOCase caseSensitivity)
        Construct a file extension comparator instance with the specified case-sensitivity.
        Parameters:
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
    • Method Detail

      • compare

        public int compare​(java.io.File file1,
                           java.io.File file2)
        Compare the extensions of two files the specified case sensitivity.
        Specified by:
        compare in interface java.util.Comparator<java.io.File>
        Parameters:
        file1 - The first file to compare
        file2 - The second file to compare
        Returns:
        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.
      • toString

        public java.lang.String toString()
        String representation of this file comparator.
        Returns:
        String representation of this file comparator
      • sort

        public java.io.File[] sort​(java.io.File... files)
        Sort an array of files.

        This method uses Arrays.sort(Object[], Comparator) and returns the original array.

        Parameters:
        files - The files to sort, may be null
        Returns:
        The sorted array
        Since:
        2.0
      • sort

        public java.util.List<java.io.File> sort​(java.util.List<java.io.File> files)
        Sort a List of files.

        This method uses Collections.sort(List, Comparator) and returns the original list.

        Parameters:
        files - The files to sort, may be null
        Returns:
        The sorted list
        Since:
        2.0