从InputStream读取时丢失的第一个字符

时间:2013-02-10 23:44:26

标签: java stream

我有以下代码:

public class Interface {

    public void exec(){
        try {
            _inputStream.read();
            BufferedReader br = new BufferedReader( new InputStreamReader( _inputStream ));
            System.out.println( br.readLine() );
        } catch (IOException e) {
        }

    }

    public void setInputStream( InputStream inputStream ){
        _inputStream = inputStream;
    }

    private InputStream _inputStream;

}

public class Run {

    public static void main(String[] args) {
        Interface ui = new Interface();
        ui.setInputStream( new ByteArrayInputStream( "2 4 N".getBytes( Charset.defaultCharset() ) ) );
        ui.exec();
    }
}

每当我运行此代码时,我打印出来的都是

" 4 N"

第一个角色已经丢失。我的信息流发生了什么,我该怎么做才能阻止它?

2 个答案:

答案 0 :(得分:7)

_inputStream.read();

消耗一个不会转到BufferedReader的字符。你自己丢弃了这个角色。只要删除那一行就可以了。

答案 1 :(得分:2)

因为您先拨打_inputStream.read();。只需删除该行。