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 ReadTxt { 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"); InputStreamReader reader = new InputStreamReader(new FileInputStream(f),"GBK"); BufferedReader br = new BufferedReader(reader); String str=null; //下面按行读。我实现的其实就是变相的分行打印,如果有更好的方法请大家指教 //输出文件 OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream("D:\a\b\out.txt"),"GBK"); BufferedWriter bw = new BufferedWriter(os); PrintWriter out = new PrintWriter(bw); //定义开始写入新文件标记 boolean flag = false; // 从 包含文字 :第一三四三章 展现力量(第四更!) 的行开始复制写入到新文件中 String matchValue = "第一三四三章 展现力量"; while((str=br.readLine())!=null){ if (!flag) { if (str.contains(matchValue)) { flag = true; System.out.println(str); } } if (flag) { //符合标记,逐行写入到新文件 out.println(str); } } br.close(); reader.close(); bw.close(); os.close(); out.close(); } }