Java PushbackInputStream

1 什么是Java PushbackInputStream

Java PushbackInputStream 类重写InputStream并为另一个输入流提供额外的功能。它可以取消读取已读取的字节,然后将其推回一个字节。

2 Java PushbackInputStream的语法

public class PushbackInputStream extends FilterInputStream  

3 Java PushbackInputStream的方法

方法 描述
int available() 用于返回可从输入流读取的字节数。
int read() 用于从输入流中读取下一个数据字节。
int read(byte[] b, int off, int len) 用于从输入流中读取最多len个字节的数据到一个字节数组中。
boolean markSupported() 用于判断流是否支持mark()操作。
void mark(int readlimit) 用于标记输入流中的当前位置。
long skip(long x) 它用于跳过和丢弃x字节的数据。
void unread(int b) 用于通过将字节复制到推回缓冲区来推回该字节。
void unread(byte[] b) 用于通过将字节数组复制到推回缓冲区来推回该字节数组。
void unread(byte[] b, int off, int len) 用于通过将其复制到推回缓冲区的前面推回一个字节数组的一部分。
void reset() 用于重置输入流。
void close() 用于关闭输入流。

4 Java PushbackInputStream的例子

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
import java.io.*;

/**
 *  Java PushbackInputStream的例子
 */
public class Demo {
    public static void main(String[] args)throws Exception{
        String srg = "1##2#34###12";
        byte ary[] = srg.getBytes();
        ByteArrayInputStream array = new ByteArrayInputStream(ary);
        PushbackInputStream push = new PushbackInputStream(array);
        int i;
        while( (i = push.read())!= -1) {
            if(i == '#') {
                int j;
                if( (j = push.read()) == '#'){
                    System.out.print("**");
                }else {
                    push.unread(j);
                    System.out.print((char)i);
                }
            }else {
                System.out.print((char)i);
            }
        }
    }
}

输出结果为:

1**2#34**#12

 

热门文章

优秀文章