假如现在需要在整个项目中搜索所有带IP的网址,例如webService发布地址呀这样的,
随便举个栗子
http://127.0.0.1:8080/XXXXX/services/AService
那怎样通过正则表达式来搜索整个项目的这种网址呢?用正则表达式匹配就好啦。
第一步,扫描项目目录下所有文件
public void scanFile(File file) {
File[] fileLists = file.listFiles();
Set<String> finalFiles = new HashSet<String>();
for (int i = 0; i < fileLists.length; i++) {
// 判断是否是文件
if (fileLists[i].isFile()) {
// 如果是文件就匹配http地址
findStr(fileLists[i], finalFiles);
} else {//如果是文件夹
scanFile(fileLists[i]);
}
}
for (String string : finalFiles) {
System.out.println(string);
}
}
第二步,正则匹配
public void findStr(File file, Set<String> finalFiles) {
try {
BufferedReader bReader = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
String line;
while ((line = bReader.readLine()) != null) {
boolean flag = Pattern.matches(".*http://([0-9]{1,3}.){3}([0-9]{1,3}).*", line);
if (flag) {
// 去掉前面多余的字符串
int index = line.indexOf("http://");
String addr = line.substring(index);
finalFiles.add(addr);
}
}
bReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
第三步,主函数
public static void main(String[] args) {
TestFindAddress t = new TestFindAddress();
String filePath = "D://java//project//testPattern";
File file = new File(filePath);
t.scanFile(file);
}
好啦~~~