package org.eclipse.jdt.internal.compiler.batch; | |
/* | |
* (c) Copyright IBM Corp. 2000, 2001. | |
* All Rights Reserved. | |
*/ | |
import java.io.*; | |
public class FileFinder { | |
private final int INITIAL_SIZE = 10; | |
public String[] resultFiles = new String[INITIAL_SIZE]; | |
public int counter = 0; | |
public void find(File f, String pattern, boolean verbose) { | |
if (verbose) { | |
System.out.println(Main.bind("scanning.start"/*nonNLS*/,f.getAbsolutePath())); | |
} | |
find0(f, pattern, verbose); | |
System.arraycopy(resultFiles, 0, (resultFiles = new String[counter]), 0, counter); | |
if (verbose) { | |
System.out.println(); | |
System.out.println(Main.bind("scanning.done"/*nonNLS*/,f.getAbsolutePath())); | |
} | |
} | |
public void find0(File f, String pattern, boolean verbose) { | |
if (f.isDirectory()) { | |
String[] files = f.list(); | |
if (files == null) return; | |
for (int i = 0, max = files.length; i < max; i++) { | |
File current = new File(f, files[i]); | |
if (current.isDirectory()) { | |
find0(current, pattern, verbose); | |
} else { | |
if (current.getName().toUpperCase().endsWith(pattern)) { | |
int length; | |
if ((length = resultFiles.length) == counter) { | |
System.arraycopy(resultFiles, 0, (resultFiles = new String[length * 2]), 0, length); | |
} | |
resultFiles[counter++] = current.getAbsolutePath(); | |
if (verbose && (counter % 100) == 0) | |
System.out.print('.'); | |
} | |
} | |
} | |
} | |
} | |
} |