Java 中的重定向 stdin 和 stdout

2024-01-23

我正在尝试重定向 java 中子进程的标准输入和标准输出,最终我会将输出转到 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”字符串。 也许是因为父进程存活的时间不够长?

我还希望能够发送和接收多个命令。


在尝试侦听输入流之前,您已尝试写入输出流,因此您什么也看不到是有道理的。为了成功,您需要为两个流使用单独的线程。

i.e.,

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Scanner;

public class Foo {
   public static void main(String[] args) throws IOException {
      Process cmd = Runtime.getRuntime().exec("cmd.exe");

      final InputStream inStream = cmd.getInputStream();
      new Thread(new Runnable() {
         public void run() {
            InputStreamReader reader = new InputStreamReader(inStream);
            Scanner scan = new Scanner(reader);
            while (scan.hasNextLine()) {
               System.out.println(scan.nextLine());
            }
         }
      }).start();

      OutputStream outStream = cmd.getOutputStream();
      PrintWriter pWriter = new PrintWriter(outStream);
      pWriter.println("echo Hello World");
      pWriter.flush();
      pWriter.close();
   }
}

而且您确实也不应该忽略错误流,而是应该吞噬它,因为忽略它有时会破坏您的进程,因为它可能会耗尽缓冲区空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 中的重定向 stdin 和 stdout 的相关文章

  • 从 MS Access 中提取 OLE 对象(Word 文档)

    我有一个 Microsoft Access 数据库 其中包含一个包含 Microsoft Word 文档的 OLE 对象字段 我试图找到代码来检索保存在 OLE 对象中的文件 以便用户可以从我的 JavaFx 应用程序中的按钮下载它 但没有
  • 您建议使用哪种压缩(GZIP 是最流行的)servlet 过滤器?

    我正在寻找一个用于大容量网络应用程序的 GZIP servlet 过滤器 我不想使用容器特定的选项 要求 能够压缩响应负载 XML Faster 已在大批量应用的生产中得到验证 应适当设置适当内容编码 跨容器移植 可选择解压缩请求 谢谢 我
  • 为自定义驱动程序创建 GraphicsDevice

    我正在开发一个在嵌入式系统中使用 Java 的项目 我有用于屏幕和触摸输入的驱动程序 以及用于文本输入的虚拟键盘 我的屏幕驱动程序有一个Graphics2D您可以绘制的对象和repaint Rectangle 更新方法 类似地 触摸驱动器能
  • 为什么Iterator接口没有add方法

    In IteratorSun 添加了remove 方法来删 除集合中最后访问的元素 为什么没有add方法来向集合中添加新元素 它可能对集合或迭代器产生什么样的副作用 好的 我们开始吧 设计常见问题解答中明确给出了答案 为什么不提供 Iter
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • 在 Java 中通过 XSLT 分解 XML

    我需要转换具有嵌套 分层 表单结构的大型 XML 文件
  • Java、Spring:使用 Mockito 测试 DAO 的 DataAccessException

    我正在尝试增加测试覆盖率 所以我想知道 您将如何测试 DAO 中抛出的 DataAccessExceptions 例如在一个简单的 findAll 方法中 该方法仅返回数据源中的所有数据 就我而言 我使用 Spring JdbcTempla
  • Spring Data JPA:查询如何返回非实体对象或对象列表?

    我在我的项目中使用 Spring Data JPA 我正在演奏数百万张唱片 我有一个要求 我必须获取各种表的数据并构建一个对象 然后将其绘制在 UI 上 现在如何实现我的 Spring 数据存储库 我读到它可以通过命名本机查询来实现 如果指
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • Play.application() 的替代方案是什么

    我是 Play 框架的新手 我想读取conf文件夹中的一个文件 所以我用了Play application classloader getResources Data json nextElement getFile 但我知道 play P
  • Java - 从 XML 文件读取注释

    我必须从 XML 文件中提取注释 我找不到使用 JDOM 或其他东西来让它们使用的方法 目前我使用 Regex 和 FileReader 但我不认为这是正确的方法 您可以使用 JDOM 之类的东西从 XML 文件中获取注释吗 或者它仅限于元
  • 我可以限制分布式应用程序发出的请求吗?

    我的应用程序发出 Web 服务请求 提供商处理的请求有最大速率 因此我需要限制它们 当应用程序在单个服务器上运行时 我曾经在应用程序级别执行此操作 一个对象跟踪到目前为止已发出的请求数量 并在当前请求超出允许的最大负载时等待 现在 我们正在
  • 如何在Java中对对象数组进行字段级别排序以进行等级比较?

    In Java Class StudentProgress String Name String Grade CTOR goes here main class main method StudentProgress arrayofObje
  • HttpClient请求设置属性问题

    我使用这个 HttpClient 库玩了一段时间 几周 我想以某种方式将属性设置为请求 不是参数而是属性 在我的 servlet 中 我想使用 Integer inte Integer request getAttribute obj 我不
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • try-with-resources 中出现死代码警告,但翻译后的 try-catch-finally 中没有出现死代码警告

    以下代码使用try 有资源 https docs oracle com javase specs jls se7 html jls 14 html jls 14 20 3Java 8 中引入的构造 偶尔抛出 方法被声明为抛出一个偶尔的异常
  • 基于 Spring Boot 的测试中的上下文层次结构

    我的 Spring Boot 应用程序是这样启动的 new SpringApplicationBuilder sources ParentCtxConfig class child ChildFirstCtxConfig class sib

随机推荐

  • Android Studio 插件 Fabric 中出现异常

    我已经安装了最新的面料插件 https get fabric io beta对于 Android Studio 它运行良好一段时间 更新到 Android Studio 1 1 0 后 我在事件日志中看到以下内容 以及 NullPointe
  • 括号:如何使自动完成/自动缩进工作?

    括号看起来不错 但我在使用它时遇到两个问题 First 我通常这样自动完成标签 div class PRESS TAB becomes div class class div 我无法实现这一点 我尝试下载一堆插件 但没有任何作用 Secon
  • 使用 ActiveMQ/Stomp 在 PHP 和 Java 之间进行通信

    背景 我有两个服务需要通过消息队列相互通信 一种是用 PHP 编写的遗留服务 另一种是用 Java 编写的 迟早 PHP 服务将被 Java 重写 它们当前相互通信的方式是写入共享数据库 由其他服务轮询 这就是我试图摆脱并用消息队列替换的内
  • 仅限 AJAX 的 Javascript 库

    我正在寻找一个只有 AJAX 没有其他功能的 Javascript 库 例如一个小型的简单 XMLHttp 包装器 微贾克斯 http code google com p microajax 这是我决定的
  • 如何让 Material-UI 选项卡与 React-router 一起使用?

    我正在尝试让 Material UI 选项卡与路由一起使用 当路由正在工作并显示所选选项卡时 选项卡之间导航的流畅动画不再起作用 如何将 React Router 与 Material UI 选项卡一起使用 以保持选项卡动画正常工作 截至目
  • 最快重合矩阵

    我有两个数组 我想计算一个巧合列表 数组 即所有索引 i j 的列表 使得 a i b j 这是我现在的代码 b np array 3 5 6 4 a np array 1 2 3 4 np array i j for i in range
  • 如何获取每个权限的保护级别?

    我试图列出所选应用程序中每个权限的保护级别 对于下面给出的代码 但我不知道如何完成它 ArrayList
  • 根据另一个依赖项的版本使用不同的代码

    以下情况 库 X 由我维护 依赖于库 Y 版本 2 0 对于库 Y 存在较新的主要版本 3 该版本通常更好 将基于 Y 2 构建的代码升级到 Y 3 非常简单 但仍然需要对现有代码进行一些调整 Y 是 X 的依赖项 因此升级它会迫使 X 的
  • 还有人知道这是什么意思吗?

    static final boolean assertionsDisabled java util TaskQueue desiredAssertionStatus 在源文件中看到的java util TaskQueue java Quot
  • Kotlin:公共获取私有设置变量

    在 kotlin 中定义具有公共 getter 和私有 仅内部可修改 setter 的 var 的正确方法是什么 var setterVisibility String abc Initializer required not a null
  • 该证书的颁发者无效:钥匙串将所有证书标记为“无效颁发者”[重复]

    这个问题在这里已经有答案了 钥匙串突然将我的钥匙串中的所有证书显示为无效 因为它在 2 天前工作 我还检查了开发人员门户 它在那里显示有效 它将钥匙串中的每个证书标记为 该证书的颁发者无效 正如消息表明 这一定是发行人方面的问题 而我们的发
  • InternalResourceViewResolver 与 UrlBasedViewResolver 有何不同

    我刚刚开始使用Spring 我遇到了很多教程 我看到了更多使用的例子InternalResourceViewResolver than UrlBasedViewResolver 我查看了 Spring 文档 但我无法弄清楚使用其中之一的好处
  • 尝试使用 FragmentActivity 时无法访问 ActivityCompat Api 23

    我尝试在我的智能手表上使用 ViewPager 但在尝试重建 运行 调试我的应用程序时不断收到错误 我正在使用 FragmentActivity 这就是发生错误的地方 我搜索了 stackoverflow 和教程网站来看看可能是什么问题 很
  • 为什么没有“国外进口原药不安全”?

    这是我之前问题的后续here https stackoverflow com questions 41213378 using foreign import prim with a c function using stg calling
  • 在现有的 Ruby on Rails 应用程序中创建博客

    我有兴趣向我的 Ruby on Rails 应用程序添加博客 我不想浪费时间在 Rails 中编写 bloggin 应用程序 我可以做到 但我只是更喜欢更强大的东西 我研究过 Wordpress 它似乎是最好的博客平台之一 我的问题是如何将
  • 实体框架返回旧数据

    我遇到了 EF 无法在 3 层 WPF 应用程序中返回最新数据的问题 我怀疑这与我处理上下文生命周期的方式有关 这是场景 UnitOfWork 内包含多个存储库 还有一项服务 MyService 它使用 UnitOfWork 此 UnitO
  • 使用朴素贝叶斯分类器对推文进行分类:一些问题

    除了其他来源之外 我还使用 Stackoverflow 上的各种帖子 尝试实现自己的 PHP 分类器 将推文分为正面 中性和负面类别 在编码之前 我需要理清流程 我的思路和例子如下 p class p words class Bayes t
  • Nemerle 和 F# 在 .Net 上的功能比较

    社区维基问题 根据这个问题 在 Net 中使用 Scala 有什么好处 https stackoverflow com questions 3587499 what are the benefits of using scala in ne
  • ios7中光标可见性问题

    只需创建一个UITextField in ios7 SDK但是当我输入一些内容时 会显示文本UItextField但光标不是 关于可能出现什么问题的任何线索吗 使用光标更改 UITextField 的tintColor mobileText
  • Java 中的重定向 stdin 和 stdout

    我正在尝试重定向 java 中子进程的标准输入和标准输出 最终我会将输出转到 JTextArea 或其他东西 这是我当前的代码 Process cmd Runtime getRuntime exec cmd exe cmd getOutpu