import java.io.File;
import java.io.FilenameFilter;
import java.io.FileFilter;
/**
* -----------------------------------------------------------------------------
* This program demonstrates how to list the file or subdirectories in a
* given directory
*
* @version 1.0
* -----------------------------------------------------------------------------
*/
public class ListFilesSubs {
/**
* Used to list the files / subdirectories in a given directory.
* @param dir Directory to start listing from
*/
private static void doSimpleFileListing(String dirName) {
System.out.println();
System.out.println("Simple file listing...");
System.out.println("----------------------");
File dir = new File(dirName);
String[] children = dir.list();
printFiles(children, dirName);
}
/**
* Used to list the files / subdirectories in a given directory and also
* provide a filter class.
* @param dir Directory to start listing from
* @param ff A string that can be used to filter out files from the
* returned list of files. In this example, the String
* values is used to only return those values that start
* with the given String.
*/
private static void doFileFilterListing(String dirName, String ff) {
System.out.println("Filter file listing...");
System.out.println("----------------------");
final String fileFilter = ff;
File dir = new File(dirName);
FilenameFilter filter = null;
if (fileFilter != null) {
// It is also possible to filter the list of returned files.
// This example uses the passed in String value (if any) to only
// list those files that start with the given String.
filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.startsWith(fileFilter);
}
};
}
String[] children = dir.list(filter);
printFiles(children, dirName);
}
/**
* Used to list the files / subdirectories in a given directory and also
* provide a filter class that only lists the directories.
* @param dir Directory to start listing from
*/
private static void doFileFilterDirectoryListing(String dirName) {
System.out.println("Filter Directory listing...");
System.out.println("---------------------------");
File dir = new File(dirName);
// The list of files can also be retrieved as File objects. In this
// case, we are just listing all files in the directory. For the sake
// of this example, we will not print them out here.
File[] files = (new File(dirName)).listFiles();
// This filter only returns directories
FileFilter dirFilter = new FileFilter() {
public boolean accept(File dir) {
return dir.isDirectory();
}
};
files = dir.listFiles(dirFilter);
for (int i=0; i<files.length; i++) {
System.out.println("[D] : " + files[i]);
}
System.out.println();
}
/**
* Utility method to print the list of files to the terminal
* @param children A String array of the file names to print out
* @param dirName The given directory to start the listing at.
*/
private static void printFiles(String[] children, String dirName) {
if (children == null) {
System.out.println("Error with " + dirName);
System.out.println("Either directory does not exist or is not a directory");
} else {
for (int i=0; i<children.length; i++) {
// Get filename of file or directory
String filename = children[i];
if ((new File(dirName + File.separatorChar + filename)).isDirectory()) {
System.out.print("[D] : ");
} else {
System.out.print("[F] : ");
}
System.out.println(dirName + File.separatorChar + filename);
}
}
System.out.println();
}
/**
* Sole entry point to the class and application.
* @param args Array of String arguments.
*/
public static void main(String[] args) {
// Call the simple file listing method
doSimpleFileListing("new_dir");
// Now do the file listing but pass in a String to filter the file list
if (args.length == 0) {
doFileFilterListing("new_dir", null);
} else {
doFileFilterListing("new_dir", args[0]);
}
// Now do another example that only prints out the directories
doFileFilterDirectoryListing("new_dir");
}
}
Java 递归列出目录下的文件以及子目录(未测试)
最新推荐文章于 2019-07-09 10:15:25 发布