读取文件中某个字符串前面的内容,两种方法

方法一:利用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);
				}
			}
		}
	}
原文地址:https://www.cnblogs.com/masterlibin/p/5635374.html