Tag: stdout

以编程方式退出应用程序的适当方法是什么?

我正在评估用户输入作为我的应用程序的命令。 如果用户按下Q或q ,然后按Enter键,则应用程序退出并执行终止。 是否有适当的背景或最佳实践如何做到这一点? 我没有任何资源可以发布,或类似的东西。 我应该只使用System.exit(0); ? 有推荐的方法吗? 作为我的第一个方法,我做了这样的事情: while (true){ try{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //Other logic goes here… if (br.readLine().equalsIgnoreCase(“Q”)){ System.exit(0); } } catch (IOException ioe) { System.out.println(“IO error trying to read your selection”); } }

没有重定向StdOut的Processbuilder

是否可以将输出流重定向回流程,或者根本不重定向? 背景故事:我正在尝试使用processbuilder启动可执行文件。 (确切来源专用服务器/ srcds.exe) 作为使用processbuilder启动它的结果,此可执行文件的控制台窗口保持为空。 启动后几秒钟,可执行文件崩溃并显示错误“CTextConsoleWin32 :: GetLine:!GetNumberOfConsoleInputEvents”,因为它的控制台为空。

通过写入stdout并从stdin读取来传递参数,从Java调用exe

我读过这个问题: Java编程:从Java调用exe并传递参数 这个答案足够好了https://stackoverflow.com/a/5604756/2674303 但我还想将参数传递给外部进程的stdin并从此进程的stdout读取。 我怎样才能做到这一点? 我的努力 : 主要方法: public class ProcessBuilderTest { public static void main(String[] args) throws IOException, InterruptedException { ProcessBuilder pb = new ProcessBuilder(“C:\\Program Files\\Java\\jdk1.8.0_111\\bin\\java”, “-cp”, //class path key “C:\\Users\\redwhite\\IdeaProjects\\HelloMyWorld\\out\\production\\HelloMyWorld” , // path to class file of ExternalProcess class “call_external.ExternalProcess”); // fully qualified name Process process = pb.start(); OutputStream processOutputStream = process.getOutputStream(); IOUtils.write(“1” […]

将stdout重定向到Java中的字符串

我知道如何将stdout重定向到文件,但我不知道如何将它重定向到字符串。

在Java中重定向stdin和stdout

我正在尝试重定向java中的子进程的stdin和stdout,最终我将输出转到JTextArea或其他东西。 这是我目前的代码, Process cmd = Runtime.getRuntime().exec(“cmd.exe”); cmd.getOutputStream().write(“echo Hello World”.getBytes()); cmd.getOutputStream().flush(); byte[] buffer = new byte[1024]; cmd.getInputStream().read(buffer); String s = new String(buffer); System.out.println(s); 输出如下: Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\(Current Directory)> 我期待看到输出的“Hello World”字符串。 也许是因为父母的过程没有长久存活? 我也希望能够发送和接收多个命令。

为什么有时会先打印System.err语句?

在Java中,我注意到有时, System.err语句首先在System.out语句之前打印,尽管后者在我的代码中首先出现在前者之前。 为什么? 我很好奇。

在Java中捕获标准输出的内容

我正在调用一个在我的控制台/标准输出中打印一些字符串的函数。 我需要捕获这个字符串。 我不能修改正在进行打印的函数,也不能通过inheritance来改变运行时行为。 我无法找到任何允许我这样做的预定义方法。 JVM是否存储打印内容的缓冲区? 有谁知道有助于我的Java方法?

为什么’java -version’会转到stderr?

java -version的结果有没有特殊的原因进入stderr ? 例如,此命令从Windows的提示行执行: java -version > java_version.txt 将文件java_version.txt留空。 编辑:执行没有任何参数的java.exe后打印出来的帮助也是如此。 编辑:出于纯粹的好奇心,我检查了它是否总是那样,事实certificate它确实存在。 java -version在JDK 1.1.8和JDK 1.2.2中都转到stderr ,但java.exe的输出没有任何参数。

使用重定向的stdin和stdout从Java运行外部程序

我正在尝试从Java程序运行外部程序,我遇到了麻烦。 基本上我想做的就是: Runtime.getRuntime().exec(“./extprogram fileOut”); 但是我发现这不起作用–Java表达式需要使用带有输入和输出流的Process以及其他我没有遇到过的东西。 我已经看过互联网上的一些例子(其中很多来自SO),并且似乎没有一种简单的标准方法可以做到这一点,对于那些不完全了解正在发生的事情的人来说,可能会非常令人沮丧。 我也难以尝试从其他人的代码示例中构建我自己的代码,因为通常看起来大多数其他人1.对重定向stdin不感兴趣,并且2.不一定将stdout重定向到文件,但是而不是System.out 。 那么,是否有人能够指出任何好的简单代码模板的方向来调用外部程序并重定向stdin和stdout ? 谢谢。