Java I/O How to - Unread to push back what has been read








Question

We would like to know how to unread to push back what has been read.

Answer

/*from  ww w .  j a va  2s.c  o  m*/

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.PushbackInputStream;

class PushbackInputStreamDemo {
  public static void main(String args[]) throws IOException {
    String s = "if (a == 4) a = 0;\n";
    byte buf[] = s.getBytes();
    ByteArrayInputStream in = new ByteArrayInputStream(buf);
    PushbackInputStream f = new PushbackInputStream(in);
    int c;

    while ((c = f.read()) != -1) {
      switch (c) {
      case '=':
        if ((c = f.read()) == '=')
          System.out.print(".eq.");
        else {
          System.out.print("<-");
          f.unread(c);
        }
        break;
      default:
        System.out.print((char) c);
        break;
      }
    }
  }
}