Я хочу прочитать только первые 5 символов из System.in
и отбросить остальную часть до символа EOL
, если поток содержит больше, чем это (чтобы начать читать следующую строку). Вот что я пробовал:Читайте только первые 5 символов и отбрасывайте отдых
private static final int READ_COUNT = 5;
public static void main(String[] args) throws IOException, InterruptedException{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int readCharacters = 0;
int character;
do{
character = reader.read();
doJob();
if(++readCharacters >= READ_COUNT){
discardRest(reader);
break;
}
} while(character != '\n');
System.out.println((char) reader.read());
}
private static void discardRest(BufferedReader reader) throws IOException {
while(true){
int character = reader.read();
if(character == '\n')
break;
}
}
public static void doJob() throws InterruptedException{
Thread.sleep(1000);
}
Это работает, но это боль. И это выглядит уродливо, как черт. Я не совсем уверен, насколько он надежный. Есть ли лучший способ достичь этого?
Почему вы спите? – eldo
@eldo В этом случае для подражания некоторой работе. – stella
Почему бы вам просто не прочитать строку из буферизованного читателя, а затем просто использовать первые пять символов этой строки? – RealSkeptic