/** original: http://snippets.dzone.com/posts/show/1875
*
*
* modified by Spencer, Mar. 1, 2012
* overload member function listfiles: directory name and extension are also acceptable.
*/
import java.io.*;
import java.util.*;
public class FileRecursor
{
public static File[] listFilesAsArray(
File directory,
FilenameFilter filter,
boolean recurse)
{
Collection<File> files = listFiles(directory,
filter, recurse);
//Java4: Collection files = listFiles(directory, filter, recurse);
File[] arr = new File[files.size()];
return files.toArray(arr);
}
public static File[] listFilesAsArray(
final String sDirectory,
final String sFilter,
boolean recurse)
{
File directory = new File(sDirectory);
FilenameFilter filter = new FilenameFilter()
{
public boolean accept(File dir, String name)
{
return name.endsWith(sFilter);
}
};
Collection<File> files = listFiles(directory,
filter, recurse);
//Java4: Collection files = listFiles(directory, filter, recurse);
File[] arr = new File[files.size()];
return files.toArray(arr);
}
public static Collection<File> listFiles(
// Java4: public static Collection listFiles(
File directory,
FilenameFilter filter,
boolean recurse)
{
// List of files / directories
Vector<File> files = new Vector<File>();
// Java4: Vector files = new Vector();
// Get files / directories in the directory
File[] entries = directory.listFiles();
// Go over entries
for (File entry : entries)
{
// Java4: for (int f = 0; f < files.length; f++) {
// Java4: File entry = (File) files[f];
// If there is no filter or the filter accepts the
// file / directory, add it to the list
if (filter == null || filter.accept(directory, entry.getName()))
{
files.add(entry);
}
// If the file is a directory and the recurse flag
// is set, recurse into the directory
if (recurse && entry.isDirectory())
{
files.addAll(listFiles(entry, filter, recurse));
}
}
// Return collection of files
return files;
}
}
////////////
Example:
//list the .java files under the current directory
File[] filelist = new FileRecursor().listFilesAsArray("./" ,".java", true);
for(File f:filelist)
System.out.println(f.getName());
No comments:
Post a Comment