当前位置: 首页 > 教程 > Java IO流 >

Java PushbackReader

精华
小牛编辑
109浏览
2023-03-14

1 什么是Java PushbackReader

Java PushbackReader类是字符流读取器。它是用来推回一个字符流,并覆盖了FilterReader类。

2 Java PushbackReader的语法

public class PushbackReader extends FilterReader  

3 Java PushbackReader的方法

方法 描述
int read() 用于读取单个字符。
int read(char[] cbuf, int off, int len) 用于将字符读入数组的一部分。
void mark(int readAheadLimit) 用于标记流中的当前位置。
boolean ready() 用于告诉流是否准备好被读取。
boolean markSupported() 用于判断流是否支持mark()操作。
long skip(long n) 用于跳过字符。
void unread (int c) 通过将字符复制到推回缓冲区来推回字符。
void unread (char[] cbuf) 用于通过将字符数组复制到推回缓冲区来推回字符数组。
void unread(char[] cbuf, int off, int len) 通过将字符数组的一部分复制到推回缓冲区的前面来推回它。
void reset() 用于重置流。
void close() 用于关闭流。

4 Java PushbackReader的例子

package cn.xnip;

/**
 * 小牛知识库网: https://www.xnip.cn
 */
import java.io.*;

/**
 *  Java PushbackReader的例子
 */
public class Demo{

    public static void main(String[] args) throws Exception {
        char ary[] = {'1','-','-','2','-','3','4','-','-','-','5','6'};
        CharArrayReader reader = new CharArrayReader(ary);
        PushbackReader push = new PushbackReader(reader);
        int i;
        while( (i = push.read())!= -1) {
            if(i == '-') {
                int j;
                if( (j = push.read()) == '-'){
                    System.out.print("#*");
                }else {
                    push.unread(j); // push back single character
                    System.out.print((char)i);
                }
            }else {
                System.out.print((char)i);
            }
        }
    }
}

输出结果为:

1#*2-34#*-56