Listing a Directory
Problem
You need to list the filesystem entries named in a directory.
Solution
Use a java.io.File object’s list( )
method.
Discussion
The java.io.File class contains
several methods for
working with directories. For example, to list the filesystem
entities named in the current directory, just write:
String names = new File(".").list( )This can become a complete program with as little as the following:
/** Simple directory lister.
*/
public class Ls {
public static void main(String argh_my_aching_fingers[]) {
String[] dir = new java.io.File(".").list( ); // Get list of names
java.util.Arrays.sort(dir); // Sort it (Data Structuring chapter))
for (int i=0; i<dir.length; i++)
System.out.println(dir[i]); // Print the list
}
}Of course, there’s lots of room for elaboration. You could
print the names in multiple columns across the page. Or even down the
page, since you know the number of items in the list before you
print. You could omit filenames with leading periods, as does the
Unix ls program. Or print the directory names
first; I once used a directory lister called lc
that did this, and I found it quite useful. By constructing a new
File object for each name, you could print the
size of each, as per the DOS dir command or the
Unix ls -l command (see Section 10.2). Or you could figure out whether each is a
file, a directory, or neither. Having done that, you could pass each
directory to your top-level function, and you’d have directory
recursion (the Unix find command, ...