繁体   English   中英

我们可以逐行从stdin读取过滤器的整个输入吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM