java打开文件,默认程序

时间:2016-09-13 07:02:47

标签: java windows file external

我需要使用socket从java服务器下载文件,然后使用默认的Windows程序打开它。我已经探索了几种解决方案,但没有一种能够完美地满足我的需求。目的是使用外部默认程序临时打开文件,然后在外部程序退出时删除该文件。我找到了这些解决方案:

  1. Desktop.getDesktop.open(MyFile),但似乎无法处理返回的值以检查外部程序退出
  2. ProcessBuilder,它处理外部程序退出,但它不会打开“默认Windows程序”,因此我需要检查每个文件扩展名以运行相关命令。这个解决方案非常“接近”,但我事先无法知道要打开的所有类型的文件
  3. Apache Commons Exec,似乎与2相同,更可靠,但具有相同的问题
  4. 怎么办?

1 个答案:

答案 0 :(得分:0)

想想解决方案,我会为有相同需求的其他人报告:

  1. 我没有使用file=new File(),而是使用file=File.createTempFile(basename,extension) [您可以使用apache common IO来管理文件名]来创建临时文件
  2. 设置要在软件退出时删除的文件(不在当前帧退出时)file.deleteOnExit()
  3. 尝试使用默认程序try{Desktop.getDesktop().open(file)}
  4. 打开文件
  5. 捕获异常处理案例没有默认程序存在,在这种情况下软件打开文件目录突出显示文件
    catch(IOException e){Runtime.getRuntime().exec("explorer.exe/select," +file.getAbsolutePath()); }