PushbackReader类——用于回推字符

来源:互联网 发布:json数组长度 编辑:程序博客网 时间:2024/06/03 19:38

PushbackReader类的用法总结

   PushbackReader类允许将一个或多个字符返回到输入流,从而可以向前查看输入流。下面是该类的两个构造函数:

   PushbackReader(Reader inputStream)

   PushbackReader(Reader inputStream,int bufSize)

  第一种形式创建的缓存流允许回推一个字符。第二种形式中回推的缓存大小由bufSize传递。

  关闭PushbackReader也会关闭inputStream指定的底层流。

  PushbackReader类提供了unread()方法,该方法向调用输入对象返回一个或多个字符。Unread()方法有三种形式,如下所示:

  void unread(int ch) throws IOException

  void unread(char buffer[]) throws IOException

  void unread(char buffer[],int offset,int numberChars) throws IOException

  第一种形式回推ch传递的字符,这是后续read()调用将返回的下一个字符。第二种形式返回buffer中的字符。第三种形式回推buffer中从offset位置开始的numberChars个字符。当回推缓存已经满时,如果试图返回字符,就会抛出IOException

注意:回推的确切含义是将unread括号内的参数内容作为当前文件指针下一次访问的内容。参数中的内容不能大于bufSize

具体用法如下所示:

import java.io.*;public class PushbackReaderDemo {   public static void main(String[] args){   String s="if(a==4) a=0;";   char buf[]=new char[s.length()];   s.getChars(0,s.length(),buf,0);      String s1="abcdefghijklmnopqrstuvwxyz";   char buf1[]=new char[s1.length()];   char buf3[]={'[','1','2',']'};   s1.getChars(0,s1.length(),buf1,0);      CharArrayReader in=new CharArrayReader(buf);   CharArrayReader in1=new CharArrayReader(buf1);   int c,c1;   try(PushbackReader f=new PushbackReader(in);  PushbackReader f1=new PushbackReader(in1,4);      ){     while((c=f.read())!=-1){  switch(c){  case '=':  if((c=f.read())=='=')  System.out.print(".eq.");  else {  System.out.print("<-");  f.unread((char)c);  }  break;  default:  System.out.print((char)c); break;  }  }    System.out.println(); while((c1=f1.read())!=-1){ switch(c1){ case 'n': System.out.print("开始:"); f1.unread(buf3);break;default:System.out.print((char)c1);  } }     }catch(IOException e){   System.out.println("I/O Error: "+e);   }   }}





0 0
原创粉丝点击