摘要:Java 搜尋文字檔關鍵字並輸出
搜尋同一目錄內文字檔關鍵字後,並輸出整理到一個文字檔
可編譯為jar檔,重複使用
Source code:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
public class FindKeyWord {
public static void main(String args[]) throws IOException{
ReadClass mReadClass = new ReadClass();
mReadClass.readData();
}
}
class ReadClass{
int count = 0;
public void readData(){
//String dirPath = "C:\\Users\\Test\\Desktop\\";
String dirPathTemp = System.getProperty("user.dir");
String dirPath = Matcher.quoteReplacement(dirPathTemp);
CharSequence findWord = "keyword";
File dir = new File(dirPath);
StringBuilder sb = new StringBuilder();
if(dir.exists() && dir.isDirectory()){
String[] names = dir.list();
for(String name: names){
FileReader fr;
try {
fr = new FileReader(dirPath + "\\" + name);
BufferedReader bf = new BufferedReader(fr);
String data = null;
try {
while((data = bf.readLine()) != null){
if(data.contains(findWord)){
String regString = "=";
String[] StringArray = data.split(regString);
output(StringArray[1], dirPath);
}
}
} catch (IOException e) {
e.printStackTrace();
}
try {
bf.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}else{
String info = "路徑錯誤: " + dirPath + "請重新輸入";
}
}
public void output(String str, String dirPath) throws IOException{
String filePath = dirPath + "\\" + "data.txt";
FileWriter mFileWriter = new FileWriter(filePath, true);
String item = null;
if((count/10) < 1){
item = " " + Integer.toString(count);
}else if((count/10) < 10){
item = " " + Integer.toString(count);
}else{
item = Integer.toString(count);
}
String mString = new String(item + ", keyword = " + str + "\r\n");
mFileWriter.write(mString);
mFileWriter.flush();
mFileWriter.close();
count++;
}
}