java - 如何将字符串输入发送到 ProcessBuilder
问题描述
class envir {
public void run() throws IOException {
ProcessBuilder builder = new ProcessBuilder("bash");
builder.redirectInput(ProcessBuilder.Redirect.PIPE);
builder.redirectOutput(ProcessBuilder.Redirect.PIPE);
builder.redirectErrorStream(true);
Process process = builder.start();
System.out.println(process.getInputStream());
}
}
我如何做到这一点,以便我可以发送一个字符串作为我的流程构建器的输入,以自动化 cli(例如env python3
)也使用线程?
如果您需要更多信息,请询问;我不擅长措辞这些问题。
解决方案
流的名称Process
令人困惑。你真正想要的是输出流:
public abstract OutputStream getOutputStream()
返回连接到子进程正常输入的输出流。
所以:
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream(), StandardCharsets.UTF_8));
然后写信给它:
bw.write("Your string");
bw.newLine();
推荐阅读
- android - Android画布捏到缩放与枢轴点
- jquery - 替换似乎在此功能中不起作用?
- javascript - 如何从动态组合框中显示表格?
- html - 构建一个 3 列 2 行的弹性网格布局,第一项跨越两行
- android - 如何用`MPChartAndroid`解决以下图表问题?
- javascript - 带有居中徽标的自定义 Bootstrap 导航栏
- java - 杰克逊:使用 [Ljava.lang.Double 的 InvalidDefinitionException
- java - 使用 iText 创建带有重复标题的表格
- git - Git: how to update branch made by merge-base
- tfs - 基于 TFS2017 的持续集成构建