您的位置:首页 > 编程语言 > Java开发

判断.java文件中getConnection与cleanUp数量是否匹配

2015-03-27 15:23 225 查看
需求:查找未关闭的数据库连接。

两步走:

1.将给定目录下的及子目录下的 所有的给定后缀名的文件路径存到集合中。

2.使用正则表达式对每个文件进行匹配。

package com.fanc.main;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Search4NotMatch {

/**
*
* 深度遍历该父目录,将给定目录下的及子目录下的 所有的给定后缀名的文件路径存到集合中。(进行过滤)。
*
* 遍历集合对每个文件进行匹配,需求是判断每个文件中的getConnection和cleanUp数目是否相等
*
*/
public static void main(String[] args) {
//指定目录
String filePath = "你需要指定的目录";
File dir = new File(filePath);

ArrayList<File> path = new ArrayList<File>();

writeToArr(dir,  path);

Iterator<File> it = path.iterator();

while (it.hasNext()) {

File file = (File) it.next();
if (!deal(file)) {

System.out.println(file);
}

}

}

public static void writeToArr(File dir,
ArrayList<File> al) {

File[] files = dir.listFiles();
for (File f : files) {
if (f.isDirectory()) {
// 递归 遍历父目录及其子目录
writeToArr(f, al);
} else {
if (f.getName().endsWith(".java")) {
al.add(f);
}
}
}
}

// 判断.java文件中getConnection与cleanUp数量是否匹配
public static boolean deal(File file) {

String str = null;

try {

FileInputStream fis = new FileInputStream(file);

byte[] content = new byte[fis.available()];

fis.read(content);

str = new String(content);

} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}

int getConnectionNumber = 0;
int cleanUpNumber = 0;

Pattern p1 = Pattern.compile("getConnection");
Pattern p2 = Pattern.compile("cleanUp");

Matcher m1 = p1.matcher(str);
Matcher m2 = p2.matcher(str);

while (m1.find()) {
getConnectionNumber++;
}

while (m2.find()) {
cleanUpNumber++;
}

if (getConnectionNumber != cleanUpNumber) {
return false;
} else {
return true;
}
}
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: