PushbackInputStream добавляет функциональность к входному потоку, позволяя нам отталкивать прочитанные байты, используя его метод unread().

Существует три версии метода unread(). Один позволяет нам отодвигать один байт, а два других позволяют отодвигать несколько байтов.

Пример

import java.io.FileInputStream;
import java.io.PushbackInputStream;
/*from www .jav a  2 s .c  o m*/
public class Main {
  public static void main(String[] args) {
    String srcFile = "test.txt";
    try (PushbackInputStream pis = new PushbackInputStream(new FileInputStream(
        srcFile))) {
      byte byteData;
      while ((byteData = (byte) pis.read()) != -1) {
        System.out.print((char) byteData);
        pis.unread(byteData);
        // Reread the byte we unread
        byteData = (byte) pis.read();
        System.out.print((char) byteData);
      }
    } catch (Exception e2) {
      e2.printStackTrace();
    }
  }
}

Приведенный выше код генерирует следующий результат.

wwwwwww..jjaavvaa22ss,,ccoomm AAPPII
AAppppeennddeedd