方法一:利用PushbackReader,默认有个长度为1的缓冲区,创建对象时需要指出缓冲区的大小。
public static void function1(File f)throws IOException { try(PushbackReader pr = new PushbackReader(new FileReader(f), 64)) { char[] cbuf = new char[32]; String lastContent = ""; String content = ""; int hasRead = 0; while((hasRead = pr.read(cbuf)) > 0) { content = new String(cbuf, 0, hasRead); int target = (lastContent + content).indexOf("new PushbackReader"); if(target > 0) { pr.unread((lastContent + content).toCharArray()); if(target > 32) { cbuf = new char[target]; pr.read(cbuf, 0, target); System.out.println(new String(cbuf, 0, target)); break; } } else { System.out.print(lastContent); lastContent = content; } } } }
方法二:利用BufferedReader,这个类有一个readline方法,可以一行一行读取文本,这个方法相对简单。
public static void function2(File f)throws IOException { try(BufferedReader br = new BufferedReader(new FileReader(f))) { String line = ""; int target = 0; while((line = br.readLine())!=null) { if((target = line.indexOf("new BufferedReader") )> 0) { System.out.println(line.substring(0, target)); break; } else { System.out.println(line); } } } }