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, ...
Get Java Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.