50 lines
1.3 KiB
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;
|
||
|
}
|
||
|
}
|