我有以下代码:
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"
第一个角色已经丢失。我的信息流发生了什么,我该怎么做才能阻止它?
答案 0 :(得分:7)
_inputStream.read();
消耗一个不会转到BufferedReader
的字符。你自己丢弃了这个角色。只要删除那一行就可以了。
答案 1 :(得分:2)
因为您先拨打_inputStream.read();
。只需删除该行。