gpt4 book ai didi

java - ProcessBuilder执行后加载属性

转载 作者:行者123 更新时间:2023-11-30 02:46:52 25 4
gpt4 key购买 nike

我有一个通过ProcessBuilder执行批处理文件的方法。批处理文件执行后,本地保存的ini文件的内容将被更新。

执行 ProcessBuilder 后,我需要加载 ini 文件来获取属性,因为我需要将其作为 JsonObject 返回。

我已经能够做到这一切。我的问题是,我获得的属性是 ProcessBuilder 上次执行的 ini 文件的内容,而不是当前的内容。要从 ProcessBuilder 的当前执行中获取 ini 文件的内容,我必须重新加载 URL,然后再次调用批处理文件。

我的问题是,我应该如何加载我的ini文件属性,以便它在执行批处理文件后获得更新的值?

这是我的方法:

public void identify() throws IOException {

ProcessBuilder builder=new ProcessBuilder("cmd.exe","/c","StartSample.bat");
builder.directory(new File(PATH));
Process process = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(process.getInputStream()));
r.close();


Properties p = new Properties();
p.load(new FileInputStream("C:/PV/PVInfo.ini"));
String pvidNO1 = p.getProperty("PVIDNO");
String pvidNo2 = p.getProperty("PVIDNo");
String pvidNo3 = p.getProperty("PV-ID");



JSONObject jsonObject = new JSONObject();
jsonObject.put("PVIDNO", pvidNO1);
jsonObject.put("PVIDNo", pvidNo2);
jsonObject.put("pvId", pvidNo3);
System.out.println(jsonObject);


}

希望有人能帮我解决这个问题。

最佳答案

以下代码片段将按您的预期工作。

ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "StartSample.bat");
builder.directory(new File(PATH));
Process process = builder.start();
process.waitFor();

Properties p = new Properties();
try (FileInputStream fis = new FileInputStream("C:/PV/PVInfo.ini")) {
p.load(fis);
}
String pvidNO1 = p.getProperty("PVIDNO");
String pvidNo2 = p.getProperty("PVIDNo");
String pvidNo3 = p.getProperty("PV-ID");

来自 process.waitFor() javadoc

Causes the current thread to wait, if necessary, until the process represented by this Process object has terminated.

关于java - ProcessBuilder执行后加载属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39990814/

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