| pl.xoft.saf.finder.Grep.java |
package pl.xoft.saf.finder;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
<pre> </pre>
@author
public class Grep {
private Pattern p = null;
private Map<String, Map<Integer, String>> searchResults = new HashMap<String, Map<Integer, String>>();
@param
public Grep(String regex){
p = Pattern.compile(regex);
}
@param
@return <code></code>
private boolean isFound(String text){
Matcher m = p.matcher(text);
return m.find();
}
<p>
</p>
<p> @link </p>
@param
@throws
@throws
public void searchInFiles(File f) throws FileNotFoundException, IOException{
if(f.isDirectory()){
File[] files = f.listFiles();
for (int i = 0; i < files.length; i++) {
searchInFiles(files[i]);
}
}else{
BufferedReader bf = new BufferedReader(new FileReader(f));
Map<Integer, String> results = new TreeMap<Integer, String>();
int lineCounter = 1;
String line;
while((line = bf.readLine()) != null){
if(isFound(line)){
results.put(lineCounter, line);
}
lineCounter++;
}
if(!results.isEmpty()){
getSearchResults().put(f.getAbsolutePath(), results);
}
bf.close();
}
}
<pre>
</pre>
@return
public Map<String, Map<Integer, String>> getSearchResults() {
return searchResults;
}
@see
@return
public String getFormatedSearchResults(){
StringBuilder sb = new StringBuilder();
for (Iterator<String> it = getSearchResults().keySet().iterator(); it.hasNext();) {
String fileName = it.next();
for (Iterator<Integer> singleFileIt = getSearchResults().get(fileName).keySet().iterator(); singleFileIt.hasNext();) {
Integer lineNumber = singleFileIt.next();
sb.append(fileName + ":" + lineNumber + ":" + getSearchResults().get(fileName).get(lineNumber) + "\n");
}
}
sb.deleteCharAt(sb.length() - 1);
return sb.toString();
}
public static void main(String[] args) throws FileNotFoundException, IOException {
Grep g = new Grep("your regexp");
File f = new File("your/file/name");
g.searchInFiles(f);
System.out.println(g.getFormatedSearchResults());
}
}