gpt4 book ai didi

java - 有没有办法有时需要来自 stdin 的数据,有时不需要 Java 中的数据?

转载 作者:行者123 更新时间:2023-12-01 17:31:37 24 4
gpt4 key购买 nike

我使用下面的代码在命令行上从 stdin 读取 sql 语句:

    BufferedReader in = null;
StringBuilder sb = new StringBuilder();
String line = null;
try {
in = new BufferedReader(new InputStreamReader(System.in));
while((line = in.readLine()) != null) {
sb.append(line);
}
} finally {
if (in!=null) in.close();
}

我的问题是应用程序有时需要使用来自标准输入的数据运行,有时则不需要(无管道输入)。如果上面的代码中没有输入,in.readLine() 会阻塞。有没有办法重写这段代码,以便在没有任何管道输入的情况下它仍然可以运行?

更新:该应用程序设计为期望来自命令行的管道数据,而不是来自键盘的数据。

最佳答案

我认为没有任何方法可以检查您最终是否会得到另一行输入。请注意,如果用户关闭输入流(例如,在终端中使用 ^D),当前代码确实会终止。

BufferedReader.ready()检查流上是否有一些数据。就像 T.J.提到过,您可能会运气不好,在实际收到数据之前就要求提供数据,并且您的用户会因为您没有回答他们的查询而感到难过。

Scanner.hasNextLine()是一个阻塞操作,所以可能不是您正在寻找的。

您可以让用户指定是否从 System.in 读取,例如通过使用命令行参数。

关于java - 有没有办法有时需要来自 stdin 的数据,有时不需要 Java 中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10319795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com