[英]Can we read the entire input of a filter from stdin line by line?
如果一个文件的内容如下。 如何在stdin中输入该内容,并在have程序中逐行读取。 如果我使用Scanner
,则一次不会获取全部内容。 每次输入后仅需一行一行。 文件内容
10 Bla Blah Blah
20 Bla Bla Bla
20 Bpa bla bla
40 Bla Bla Bla
以下代码从输入中获取字符,直到用户在Linux / Unix中按Ctrl + D或Windows中按Ctrl + Z为止:
public static void main(String[] args) throws IOException {
String text = readUntilEOF(System.in);
}
private static String readUntilEOF(InputStream in) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
char ch;
do {
ch = (char) in.read();
stringBuilder.append(ch);
}while(ch != CharacterIterator.DONE);
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
return stringBuilder.toString();
}
该代码的缺点是用户必须在每行末尾按Enter键,因为如果他们在行末尾按Ctrl + D / Ctrl + Z,则该行将被完全忽略。 如果要避免此问题,可以假定另一个字符来显示输入的结尾。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.