java - 使用默认程序运行文件并等待编辑结束

标签 java file wait

我想使用默认程序打开从服务器下载的文件,并等待编辑完成(将更改后的文件上传到服务器上)。我是这样做的:

public void init() {
    try {
        int fileId = Integer.valueOf(this.getParameter("id"));
        System.out.println("Downloading");
        String filePath = downloadFile(fileId);
        String[] cmd = { "cmd.exe", "/C", "start /wait " + filePath };
        System.out.println("Opening");
        Process p = Runtime.getRuntime().exec(cmd);
        p.waitFor();
        System.out.println("Uploading");
        uploadFile(filePath, fileId, address, session);
    } catch (IOException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

除了文件扩展名不与任何程序关联的情况外,这工作得很好。 Windows 显示对话框用于选择程序,客户端做出选择后,过程结束,文件立即上传到服务器上。知道如何解决吗?

最佳答案

这里的问题是,如果没有与扩展关联的应用程序,则会生成一个单独的进程来询问用户要使用哪个应用程序。不幸的是,您可以通过 Java 做的事情不多,除非您确切知道要调用哪个应用程序,否则如果文件编辑器在启动之前未与文件关联,您将无法监视文件编辑器。

这是一项操作系统功能,没有简单的方法可以解决它。根据文件类型,您可能想要“猜测”用户将使用什么应用程序并直接调用该应用程序而不是命令解释器,但这是非常危险且容易出错的。

关于java - 使用默认程序运行文件并等待编辑结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7836136/

相关文章:

java - 从jar中读取资源文件

java - 编辑.java文件并重新编译

java - 将图像存储在 SharedPreferences 中

java - 将多个字符串传递给新 Activity 并在 ListView 中显示它们。 Java、Android SDK

PHP mysql 创建一个文本文件供下载和数据显示

等待

java - 从 Spring Controller 调用 servlet

java - 比较两个文本文件的最佳 Java 方法

C# - 当我使用 task::wait() 方法时它抛出异常

java - 意外的线程唤醒