2016-09-13 3 views
0

ソケットを使用してJavaサーバーからファイルをダウンロードし、デフォルトのWindowsプログラムで開く必要があります。私はいくつかの解決策を模索してきましたが、私が必要とするものにはまったく合っていません。その目的は、外部デフォルトプログラムでファイルを一時的に開き、外部プログラムが終了したときにそのファイルを削除することです。デフォルトプログラムを使用したjavaオープンファイル

  1. Desktop.getDesktop.open(MyFile)を、しかし、それは外部のプログラム終了
  2. ProcessBuilderを確認することが返された値を扱うことができないようで、それが外部プログラムの終了を処理しますが、それは開きません:私は、これらの解決策を見つけました"デフォルトのWindowsプログラム"だから、私は関連するコマンドを実行するためにすべてのファイル拡張子をチェックする必要があります。このソリューションは、非常に「近い」ですが、私は、ファイルのすべてのタイプが
  3. のApache CommonsのExecのを開くには、事前に知ることができない、それはより信頼性が、同じ問題
と、2と同じであるように思わ

どうすればよいですか?

+1

可能な複製([WindowsプロセスはJavaでファイルを開く前に終了するのを待機する] http://stackoverflow.com/questions存在します/ 8334532/Windows-to-wait-for-window-process-to-finish-in-file-in-java) – huellif

+0

これは、Windowsのフォトビューアで開いた画像ファイルでは機能しません – z10h22

答えて

0

は解決策が見つけ、私は同じニーズを持つ他の人のためにそれを報告考える:

  1. 代わりに使用file=new File()の、私はfile=File.createTempFile(basename,extension)を使用している一時的
  2. ファイルを作成するには、[ファイル名を管理するために、Apacheの一般的なIOを使用することができます]
  3. セットファイルは(ない現在のフレームの終了時に)ソフトウェアの終了時には、デフォルトのプロケースを処理するためにtry{Desktop.getDesktop().open(file)}
  4. キャッチ例外デフォルトのprogrammでファイルを開けないためにfile.deleteOnExit()
  5. 試みを削除しますGRAMMは、この場合にはソフトウェアのオープンファイルディレクトリは、ファイルを強調、
    catch(IOException e){Runtime.getRuntime().exec("explorer.exe/select," +file.getAbsolutePath()); }
関連する問題