如果a的文件包含如下内容。如何在stdin中输入该内容并在has程序中逐行读取。如果我使用Scanner
,则一次不会占用整个内容。每次进入后它只需逐行进行。
文件内容
10 Bla Blah Blah
20 Bla Bla Bla
20 Bpa bla bla
40 Bla Bla Bla
答案 0 :(得分:0)
以下代码从输入中获取字符,直到用户在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,则该行将被完全忽略。如果您想避免此问题,可以假设另一个字符显示输入结束。