import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FetchCertainLog {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) {
if(null == args){
System.out.println("Please input filePath and sessionId!");
}
if(args.length < 2){
System.out.println("Two params, e.g. filePath, sessionId");
}
String filePath = args[0];
String sessionId = args[1];
BufferedReader reader = null;
BufferedWriter writer = null;
try {
reader = new BufferedReader(new InputStreamReader(new FileInputStream(new File(filePath))));
writer = new BufferedWriter(new FileWriter(new File(sessionId)));
String line = reader.readLine();
int lineNum = 0;
int tempLineNum = 0;
while(null != line){
Pattern pattern = Pattern.compile("^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}");
Matcher matcher = pattern.matcher(line);
boolean flag = matcher.find();
lineNum++;
//假定文件完整,都是以日期开头
if(flag){
int j = line.indexOf(sessionId);
if(j != -1){
writer.write(line + "\n");
writer.flush();
tempLineNum = lineNum;
}
}else{
if(lineNum == (tempLineNum+1)){
writer.write(line + "\n");
writer.flush();
tempLineNum = lineNum;
}
}
line = reader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally{
if(null != reader){
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(null != writer){
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}