读取文件中某个字符串前面的内容,两种方法
Posted 32ddd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读取文件中某个字符串前面的内容,两种方法相关的知识,希望对你有一定的参考价值。
方法一:利用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); } } } }
以上是关于读取文件中某个字符串前面的内容,两种方法的主要内容,如果未能解决你的问题,请参考以下文章
通过shell循环逐行读取两个txt文件,将两个不同文建内容拼成一个新文件txt
Java中bufferedReader的readline读取不到文件内容,显示的是null。