我需要使用socket从java服务器下载文件,然后使用默认的Windows程序打开它。我已经探索了几种解决方案,但没有一种能够完美地满足我的需求。目的是使用外部默认程序临时打开文件,然后在外部程序退出时删除该文件。我找到了这些解决方案:
Desktop.getDesktop.open(MyFile)
,但似乎无法处理返回的值以检查外部程序退出ProcessBuilder
,它处理外部程序退出,但它不会打开“默认Windows程序”,因此我需要检查每个文件扩展名以运行相关命令。这个解决方案非常“接近”,但我事先无法知道要打开的所有类型的文件怎么办?
答案 0 :(得分:0)
想想解决方案,我会为有相同需求的其他人报告:
file=new File()
,而是使用file=File.createTempFile(basename,extension)
[您可以使用apache common IO来管理文件名]来创建临时文件file.deleteOnExit()
try{Desktop.getDesktop().open(file)}
catch(IOException e){Runtime.getRuntime().exec("explorer.exe/select," +file.getAbsolutePath());
}