[
https://issues.apache.org/jira/browse/IO-176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12651696#action_12651696
]
niallp edited comment on IO-176 at 11/28/08 9:24 PM:
--------------------------------------------------------------
btw Commons IO has had a set of Comparator implementations[1] for files since
version 1.4 - including a file name implementation that can do case-insensitive
compares[2]:
[1]
http://commons.apache.org/io/api-release/org/apache/commons/io/comparator/package-summary.html
[2]
http://commons.apache.org/io/api-release/org/apache/commons/io/comparator/NameFileComparator.html#NAME_INSENSITIVE_COMPARATOR
I also just added sort methods to those implementations (IO-142) so you will be
able to do what you want with the following in DirectoryWalker:
{code}
protected File[] filterDirectoryContents(File directory, int depth, File[]
files) throws IOException {
return NameFileComparator.NAME_INSENSITIVE_COMPARATOR.sort(files);
}
{code}
was (Author: niallp):
btw Commons IO has had a set of Comparator implementations[1] for files
since version 1.4 - including a file name implementation that can do
case-insensitive compares[2]:
[1]
http://commons.apache.org/io/api-release/org/apache/commons/io/comparator/package-summary.html
[2]
http://commons.apache.org/io/api-release/org/apache/commons/io/comparator/NameFileComparator.html#NAME_INSENSITIVE_COMPARATOR
I also just added sort methods to those implementations (IO-142) so you will be
able to do what you want with the following in DirectoryWalker:
[code]
protected File[] filterDirectoryContents(File directory, int depth, File[]
files) throws IOException {
return NameFileComparator.NAME_INSENSITIVE_COMPARATOR.sort(files);
}
[code]
> Add an overridable sort callback to the filenames
> --------------------------------------------------
>
> Key: IO-176
> URL: https://issues.apache.org/jira/browse/IO-176
> Project: Commons IO
> Issue Type: Improvement
> Environment: Windows (others too I'm sure)
> Reporter: David Felsenthal
> Assignee: Niall Pemberton
> Priority: Minor
> Fix For: 2.0
>
>
> Several people have requested the ability to sort the file names that are
> used by the directory walker. I'd suggest (and have done for myself) using an
> overridable callback rather than a filter. This allows current code to
> operate unbroken.
> I changed line 394 of DirectoryWalker:
>
> File[] childFiles = handleFileNames((filter == null ?
> directory.listFiles() : directory.listFiles(filter)));
> Added:
> /**
> * Overridable callback method invoked when a directory is visited.
> * <p>
> * This implementation does nothing.
> *
> * @param names
> * the array of File objects in arbitrary order
> *
> * @return the (possibly manipulated) array of File
> * @throws IOException
> * if an I/O Error occurs
> *
> *
> */
> protected File[] handleFileNames(File [] names) throws IOException {
> // do nothing - overridable by subclass
> return names;
> }
> And overrode it like this in my case, as I wanted reverse alphabetic:
> @Override
> protected File[] handleFileNames(File[] names) throws
> IOException {
> Arrays.sort(names, new Comparator<File>() {
> public int compare(File file1, File
> file2) {
> return
> file2.getName().toUpperCase().compareTo(
>
> file1.getName().toUpperCase());
> }
> });
> return names;
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.