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