我想用默认程序打开从服务器下载的文件,并等到编辑完成(在服务器上上传更改的文件)。我是这样做的:
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显示对话框和客户端做出选择过程结束后,文件立即上传到服务器上。有任何想法如何解决它?
答案 0 :(得分:0)
这里的问题是,如果没有与扩展程序相关联的应用程序,则会生成一个单独的进程以询问用户要使用的应用程序。遗憾的是,除非您确切知道要调用哪个应用程序,否则您无法在Java中执行此操作,如果文件编辑器在启动之前未与该文件关联,则无法监视该文件编辑器。
这是一项操作系统功能,并没有简单的方法。根据文件类型的不同,您可能希望“猜测”用户将使用哪个应用程序并直接调用它而不是命令解释器,但这样做非常危险并且容易出错。