根据开始字符串和结束字符串截取文件生成另一个文件(日志处理)【我】
根据开始字符串和结束字符串截取文件生成另一个文件
package file; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; public class ReadTxt2 { public static void main(String[] args) throws Exception { getDesired(); } /** * 取出想要的文件 * @date 2019年4月1日 上午11:26:36 * @throws Exception */ public static void getDesired() throws Exception {// 输入文件路径 List<String> temp = new ArrayList<>(); //输入文件 // File f = new File("D:\\a\\b\\in.txt"); File f = new File("D:\\a\\info_log-2019-04-10h2.log"); // InputStreamReader reader = new InputStreamReader(new FileInputStream(f),"GBK"); InputStreamReader reader = new InputStreamReader(new FileInputStream(f),"utf-8"); BufferedReader br = new BufferedReader(reader); String str=null; //下面按行读。我实现的其实就是变相的分行打印,如果有更好的方法请大家指教 //输出文件 OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream("D:\\a\\b\\out11.txt"),"utf-8"); BufferedWriter bw = new BufferedWriter(os); PrintWriter out = new PrintWriter(bw); //定义开始写入新文件标记 boolean start = false; //结束写入标记 boolean end = false; // 从 包含文字 :第一三四三章 展现力量(第四更!) 的行开始复制写入到新文件中 String matchStart = "20190323964的处理预计线程数为:4,"; String matchEnd = "scheduler_Worker-8的--consume time----任务耗时:2363317 毫秒"; while((str=br.readLine())!=null){ if (!start) { if (str.contains(matchStart)) { start = true; System.out.println("找到开始字符串"+str); } } if (str.contains(matchEnd)) { end = true; System.out.println("找到结束字符串"+str); } if (start) { if (end) { break; } //符合标记,逐行写入到新文件 out.println(str); } } br.close(); reader.close(); bw.close(); os.close(); out.close(); } }