【Java】自制查找工具

java

需求:查找后台代码中写的SQL是否包含拆分表,如果存在,则返回那些表名

 

Context.txt 粘贴我们找到的DAO层代码,因为所有方法封装的SQL都在DAO层里【就理解为筛查的字符串】

Dictionary.txt 存放了拆分表的名字,也就是字典

Output.log 输出日志

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;

import java.time.LocalDateTime;

import java.time.format.DateTimeFormatter;

import java.time.format.FormatStyle;

import java.util.*;

import java.util.logging.Logger;

public class Main {

private static Logger logger = Logger.getLogger(Main.class.getName());

// 当前程序所在路径

private static final String LOCAL_PATH = System.getProperty("user.dir");

private static final String CONTEXT_FILE_PATH = LOCAL_PATH + "\\Context.txt";

private static final String DICTIONARY_FILE_PATH = LOCAL_PATH + "\\Dictionary.txt";

private static final String OUTPUT_FILE_PATH = LOCAL_PATH + "\\Output.log";

public static void main(String[] args) throws Exception {

FileReader contextFileReader = new FileReader(CONTEXT_FILE_PATH);

BufferedReader contextBufferedReader = new BufferedReader(contextFileReader);

FileReader dictionaryFileReader = new FileReader(DICTIONARY_FILE_PATH);

BufferedReader dictionaryBufferedReader = new BufferedReader(dictionaryFileReader);

FileWriter outputFileWriter = new FileWriter(OUTPUT_FILE_PATH);

BufferedWriter outputBufferedWriter = new BufferedWriter(outputFileWriter);

// 加载字典

String dictString = dictionaryBufferedReader.readLine();

// 封装结构

List<String> dictList = Arrays.asList(dictString.split(","));

// 扫描的context行

String tempRow = "";

LinkedHashMap<String, Object> linkedHashMap = new LinkedHashMap();

linkedHashMap.put("flag", false);

LinkedList linkedList = new LinkedList();

// 对context进行扫描

while (null != (tempRow = contextBufferedReader.readLine())) {

// 创建字典的迭代器

Iterator<String> iterator = dictList.iterator();

// 迭代扫描

while (iterator.hasNext()) {

String perDict = iterator.next(); // 遍历的每一个字典的字

// 判断context当前行是否包含这个字典

boolean contains = tempRow.toLowerCase().contains(perDict.trim());

int index = tempRow.indexOf(perDict + "_");

if (contains && index == -1) {

if (! linkedList.contains(perDict.trim())) {

linkedList.add(perDict.trim());

}

if (contains && ! (Boolean) linkedHashMap.get("flag")) {

linkedHashMap.put("flag", true);

}

}

}

}

linkedHashMap.put("containTable", linkedList);

outputBufferedWriter.write(linkedHashMap.toString());

outputBufferedWriter.flush();

contextBufferedReader.close();

dictionaryBufferedReader.close();

outputBufferedWriter.close();

logger.info(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).format(LocalDateTime.now()) + linkedHashMap.toString());

}

}

封装成JAR 用CMD脚本跑程序【Run.cmd】:

java -jar (定义的jar包文件名) xxx.jar

pause

 

程序与读取的文件要放在同一个目录下:

 

以上是 【Java】自制查找工具 的全部内容, 来源链接: utcz.com/z/393146.html

回到顶部