作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
public static void executeCommand(String cmd) {
try {
Process process = Runtime.getRuntime().exec(cmd, null,
new File("/usr/hadoop-0.20.2/"));
InputStream stdin = process.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.println("<output></output>");
while ((line = br.readLine()) != null)
System.out.println(line);
InputStreamReader esr = new InputStreamReader(
process.getErrorStream());
BufferedReader errorReader = new BufferedReader(esr);
String lineError;
while ((lineError = errorReader.readLine()) != null)
System.out.println(lineError);
process.waitFor();
System.out.println("");
} catch (Exception e) {
e.printStackTrace();
}
}
这是我执行名为“cmd”的命令的代码。但是我无法通过这段代码获得实时输出。命令完成时输出出来。我想要实时输出。有办法做到这一点吗?
最佳答案
您描述的问题很可能是由您调用的应用程序引起的:许多应用程序在连接到终端时使用无缓冲 I/O,但在连接到管道时使用缓冲 I/O。因此,您的 cmd
可能只是决定不以小位的形式写入其输出,而是以大块的形式写入。正确的解决方法是调整命令,在适当的时候刷新它的输出。在 Java 方面您对此无能为力。另见 this answer .
关于java - 我想要我的 Runtime.getRuntime().exec() 的实时输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11788704/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!