haha.f-6ren">
gpt4 book ai didi

java - 使用Java调用Linux终端: How to flush the output?

转载 作者:IT王子 更新时间:2023-10-29 00:39:53 25 4
gpt4 key购买 nike

1) 我正在使用 Java 调用 Linux 终端来运行 foo.exe 并将输出保存在一个文件中:

    String[] cmd = {"/bin/sh", "-c", "foo >haha.file"};
Runtime.getRuntime().exec(cmd);

2) 问题是当我打算在代码后面读取 haha​​.file 时,它​​还没有被写入:

File f=new File("haha.file"); // return true
in = new BufferedReader(new FileReader("haha.file"));
reader=in.readLine();
System.out.println(reader);//return null

3) 程序完成后才会写入haha.file。我只知道如何冲洗“作家”,但不知道如何冲洗某物。像这样。如何强制 java 在终端中写入文件?

提前致谢E.E.

最佳答案

这个问题是由Runtime.exec的异步性质引起的. foo 在一个单独的进程中执行。您需要调用Process.waitFor()以确保文件已被写入。

String[] cmd = {"/bin/sh", "-c", "foo >haha.file"};
Process process = Runtime.getRuntime().exec(cmd);
// ....
if (process.waitFor() == 0) {
File f=new File("haha.file");
in = new BufferedReader(new FileReader("haha.file"));
reader=in.readLine();
System.out.println(reader);
} else {
//process did not terminate normally
}

关于java - 使用Java调用Linux终端: How to flush the output?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3231605/

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