【问题标题】:java open file with default programjava用默认程序打开文件
【发布时间】:2016-09-13 07:02:47
【问题描述】:

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

  1. Desktop.getDesktop.open(MyFile),但是似乎无法处理返回值来检查外部程序退出
  2. ProcessBuilder,它处理外部程序退出,但它没有打开“默认 Windows 程序”,所以我需要检查每个文件扩展名以运行相关命令。这个解决方案相当“接近”,但我无法提前知道要打开的所有类型的文件
  3. Apache Commons Exec,好像和2一样,更可靠但问题相同

怎么办?

【问题讨论】:

标签: java windows file external


【解决方案1】:

认为找到了解决方案,我将其报告给其他有相同需求的人:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多