1)我用Java调用Linux终端运行foo.exe的和输出保存到一个文件:使用Java调用Linux终端:如何刷新输出?
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.
要小心这种方法。使用exec()时,潜伏着stdout/stderr流。当waitFor()被阻塞时,你确实需要异步地消耗输出/错误流,否则它可能永远不会返回,因为stdout/err缓冲区填满并阻塞分叉进程。签出解决这个问题的lib的apache commons-exec。 – 2010-07-12 20:19:19