gpt4 book ai didi

java - 用 Java 将用户输入发送到控制台

转载 作者:行者123 更新时间:2023-12-01 12:46:22 25 4
gpt4 key购买 nike

我正在尝试用 Java 编写一些东西来自动导入证书。在命令 shell 中输入此命令时:

    keytool -import -keystore c:\.truststore -alias xenv -file cacert.pem

它会问我两个问题:密码以及是否要确认。在Python中,我可以使用subprocess.Popen,如下所示:

p = subprocess.Popen("keytool","-import","-keystore","c:\\.truststore","-alias","xenv","-file","cacert.pem", stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout, stderr = p.communicate("password\n" + "y\n")

我现在正在尝试用 Java 做类似的事情。经过几个小时的尝试后,我认为我已经走上了正确的道路,但我无法完全让它发挥作用。知道我做错了什么吗?提前致谢!

import java.io.*;

public class PropertyTest {

public static void main(String[] args) throws IOException {
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "keytool", "-import", "-keystore", "c:\\.truststore", "-alias", "xenv", "-file", "c:\\cacert.pem");
pb.redirectErrorStream(true);
Process p = pb.start();
OutputStream out = p.getOutputStream();
out.write("password\n".getBytes());
out.write("y\n".getBytes());
}
}

最佳答案

这有效。我将其更改为 BufferedWriter,并在完成后刷新并关闭它。希望这可以帮助其他遇到类似问题的人!

    ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "keytool", "-import", "-keystore", "c:\\.truststore", "-alias", "alias", "-file", "c:\\cacert.pem");
pb.redirectErrorStream(true);
Process p = pb.start();
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
out.write("allgoodthings\n");
out.write("y\n");
out.flush();
out.close();

关于java - 用 Java 将用户输入发送到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24665768/

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