2016-10-08 18 views
-1

ファイルを開くためにjava.awt.Desktopを使用しています。私はfiletypeプログラムの関連付けを管理していないので、デフォルトではない特定のプログラムでファイルを開きたいと思います。これどうやってするの?デスクトップの特定のプログラムでファイルを開く方法

これは私のコードです:

public static void open(File document) throws IOException { 
     Desktop dt = Desktop.getDesktop(); 
     dt.open(document); 
    } 
+0

なぜdownvote ...? –

答えて

1

実行するプログラムの名前と場所が分かっていれば、直接実行してファイル名を指定して開くことができます引数(スペースの後):

try { 
    Runtime runTime = Runtime.getRuntime(); 
    // Don't forget that '\' needs to be escaped with another '\' 
    // Also, there may be spaces in the name(s). Use quotes (with their own escapes!) 
    Process process = runTime.exec("\"C:\\Windows\\system32\\notepad.exe\"" + 
            " " + // Separate argument with space 
            "\""+document.getAbsolutePath()+"\""); 
} // try 
catch (IOException e) { 
    e.printStackTrace(); 
} // catch 
1

私はデスクトップクラスがそれをサポートしているとは思いません。ファイルの関連付けを照会するAPIはありません。

ユーザーはリストから選択しますか?もしそうなら、あなたはプラットフォームごとにそれをしなければならないと思います。 Windowsの場合、この質問を参照することができます: Get Windows files associations via Java

または特定のプログラムを覚えていますか?そうであれば、Runtime.exec()で直接起動することができます: https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html

関連する問題