Java: Search For Files In A Directory
Thursday, 06 May 2010 18:54

Here's an example of how to search for a '.java' files in a directory.

import java.io.File;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class mymain 
{

	public static void main(String[] args) {
		File curdir = new File(".");
		if (curdir.isDirectory() == false) {
			System.err.println("Error: '" + curdir.getAbsolutePath() + "' is not a directory.");
			return;
		} else {
			System.out.println("Search directory: " + curdir.getAbsoluteFile());
		}

		Pattern p = Pattern.compile("([\\.]java)$");

		ArrayList<File> files = FindFilesInDir(p, curdir);
		System.out.println("\tFound " + files.size() + " files");
		for (File f : files) {
			System.out.println("\t\t" + f.getAbsolutePath());
		}
	}

	public static ArrayList<File> FindFilesInDir(Pattern p, File dir) {
		ArrayList<File> retval = new ArrayList<File>();
		if (dir.isDirectory() == false) {
			return retval;
		}
		File contents[] = dir.listFiles();
		for (int i = 0; i < contents.length; i += 1) {
			File child = contents[i];
			if (child.isDirectory()) {
				ArrayList<File> append = FindFilesInDir(p, child);
				retval.addAll(append);
			}
			if (child.isFile()) {
				Matcher m = p.matcher(child.getName());
				if (m.find() == true) {
					retval.add(child);
				}
			}
		}
		return retval;
	}

}