外部计划关闭时的条件

时间:2016-08-01 18:38:22

标签: java if-statement runtime external

我有一个程序在出现提示时打开一个外部编辑器(当前硬编码为sublime)。然后,用户将在编辑器中键入他们正在键入的内容,保存临时文件,然后关闭编辑器。当用户关闭编辑器时,我希望临时文件的内容显示在程序中。我主要担心的是创建一个可以告诉编辑器何时关闭的条件。 WindowListener可以用于引用正在启动的外部程序吗?到目前为止,这是我的代码:(注意:由于与Desktop和我当前版本的Gnome的兼容性问题,我使用Runtime。这只能在Linux上运行。)

private CachedTextInfo cti;
private File temp = File.createTempFile("tempfile",".tmp"); 

try{
    theText.setText(cti.initialText);
    String currentText = theText.getText();
    BufferedWriter bw = new BufferedWriter(new FileWriter(temp));
    bw.write(currentText);
    bw.close();
    Runtime.getRuntime().exec("subl "+ temp.getAbsolutePath());
    //When editor closes, display tmp contents
        }catch(IOException e) {
            e.printStackTrace();
        } 

如果您需要任何其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:3)

Runtime.exec()返回Process个实例,该实例具有waitFor()方法。 所以你可以做到

Process p = Runtime.getRuntime().exec("subl "+ temp.getAbsolutePath());
try {
    p.waitFor();
    // display tmp contents...
} catch (InterruptedException exc) {
    // thread was interrupted waiting for process to complete...
}