school/cs240/src/listem/GrepImpl.java

50 lines
1.3 KiB
Java

package listem;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GrepImpl extends superClass implements Grep {
public GrepImpl(){
}
public Map<File, List<String>> grep(File directory, String fileSelectionPattern,
String substringSelectionPattern, boolean recursive){
Map<File, List<String>> mymap = new HashMap<File, List<String>>();
ArrayList<File> myfiles = new ArrayList();
myfiles = super.initialsearch(directory, fileSelectionPattern, recursive);
for(int i = 0; i < myfiles.size(); i++){
List<String> word = process(myfiles.get(i), substringSelectionPattern);
if(word.size() > 0){
mymap.put(myfiles.get(i), word);
}
}
return mymap;
}
public List<String> process(File temp, String substringSelection){
List<String> word = new ArrayList();
Pattern p = Pattern.compile(substringSelection);
try {
Scanner scanner = new Scanner(temp);
while(scanner.hasNextLine()){
String line = scanner.nextLine();
Matcher m = p.matcher(line);
if(m.find()){
word.add(line);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return word;
}
}