• ベストアンサー

javaでhtmlファイルを開く方法

通常は、下記のような記述をすれば、html.htmlファイルを開けると思うのですが開けせん。どうすれば、開くことができますか? また、ディスクトップで実行しているのですが、Javaファイルと同じディレクトリ(デスクトップ)にあるhtml.htmlファイルを開くことはできないのしょうか? 相対パスで記述するとエラーになります。 初歩的な質問かもしれませんが、ご教示、宜しくお願い致します。 String[] cmd = {"C:\\html.html"}; Runtime rt = Runtime.getRuntime(); Process pr = rt.exec(cmd);

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

Windowsをご利用の場合、下のような記述で関連付け起動ができます。 try { //絶対パスの例 String cmd = "C:\\html.html"; Runtime.getRuntime().exec("cmd /c start " + cmd); //相対パスの例 File file = new File("html.html"); cmd = file.getAbsolutePath(); Runtime.getRuntime().exec("cmd /c start " + cmd); } catch (IOException e) { e.printStackTrace(); } Javaの基本APIで関連付け起動を行う方法は、おそらくありません。私が不勉強なだけかもしれませんが。 もしもこれ以上細やかな動作が必要でしたら、JNIを使うかShellExecute API を利用するアプリケーションをC言語などで作成することをご検討ください。 ちなみに、下の例で起動する場合 {"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE C:\\html.html"}を {"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE", "C:\\html.html"} に変えればうまくいくと思います。

mizuki_ff
質問者

お礼

回答いただきありがとうございます。 ばっちり、動きました。ありがとうございます!! また、こんなに簡単に、絶対パスを得る方法があったのですね。ありがとうございました。

その他の回答 (4)

回答No.5

こんにちは。 String配列は使っていません。邪道なのかな? class openhtml{ public static void main(String[] args){ String str = "explorer C:\\html.html"; Runtime rt = Runtime.getRuntime(); try{ Process pr = rt.exec(str); } catch(Exception e) { System.out.print(e); //エラー出力 } } }

mizuki_ff
質問者

お礼

回答いただきありがとうございます。 まだまだ、初心者でアドバイスとても助かりました。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.4

>String[] cmd = {"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE C:\\html.html"}; >Runtime rt = Runtime.getRuntime(); >Process pr = rt.exec(cmd); Runtime#execの使い方が間違っています。ちゃんとJavaDocを読みましょう。 Runtime#exec(String[])で実行させる場合は、プログラムと引数を明確に区分けする必要があります。今回の場合は以下のようにcmdに代入します。 String[] cmd = {"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE", "C:\\html.html"}; またはRuntime#exec(String)を使用して以下のように実行させます。 String cmd = "C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE C:\\html.html"; Process pr = Runtime.getRuntime().exec(cmd)

mizuki_ff
質問者

お礼

回答いただきありがとうございます。 まだまだ、初心者でアドバイスとても助かりました。

回答No.2

htmlファイルを開くというのはブラウザで開くということでいいですよね? ↑ということで回答します。 コマンドプロンプトで C:\html.html と入力してenterしてブラウザが起動します? 自分のでは…起動しませんでした。 まぁ、考えてみれば当たり前なんですが、 自分のPCのブラウザは「IE」です。 こいつの実行ファイルは C:\Program Files\Internet Explorer\IEPLORE.EXE です。 ですので、コマンドプロンプトから "C:\Program Files\Internet Explorer\IEPLORE.EXE" C:\hoge.html と入力するとちゃんとhoge.htmlがブラウザから開けます。 ということで、 String[] cmd = {"~"}; の配列の中にちゃんとブラウザの実行ファイルの絶対パス、開きたいhtmlファイルの絶対パスを入れれば開けるはずです。 相対パスにするのなら ブラウザの実行ファイルの相対パス:javaコマンドを実行するディレクトリからの相対パス HTMLファイルの相対パス:ブラウザの実行ファイルのあるディレクトリからの相対パス で記述する必要があります。 あと、ブラウザの実行ファイルがあるディレクトリにPATHの設定をしておけば、ブラウザの実行ファイルは絶対パスや相対パスは必要なく、実行ファイル名だけでOKですね。

mizuki_ff
質問者

補足

早速、回答いただきありがとうございます。 現在、下記のように、書き換えてみたのですが、残念ながらうまくいきませんでした。 多分、ファイルをIEに渡すのができていないのだと思いますが・・・ また、相対パスでもやってみたのですが、うまくいきません。どこか、間違っていますでしょうか? String[] cmd = {"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE C:\\html.html"}; Runtime rt = Runtime.getRuntime(); Process pr = rt.exec(cmd); String[] cmd = {"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE .\\html.html"}; Runtime rt = Runtime.getRuntime(); Process pr = rt.exec(cmd); --- ちなみに、私のPCではパスがどこかで指定されているのかも?? c:\html.html で自動的にIEで開いてくれるみたいです。

回答No.1

htmlファイルを開くというのはブラウザで開くということでいいですよね? ↑ということで回答します。 コマンドプロンプトで C:\html.html と入力してenterしてブラウザが起動します? 自分のでは…起動しませんでした。 まぁ、考えてみれば当たり前なんですが、 自分のPCのブラウザは「IE」です。 こいつの実行ファイルは C:\Program Files\Internet Explorer\IEPLORE.EXE です。 ですので、コマンドプロンプトから "C:\Program Files\Internet Explorer\IEPLORE.EXE" C:\hoge.html と入力するとちゃんとhoge.htmlがブラウザから開けます。 ということで、 String[] cmd = {"~"}; の配列の中にちゃんとブラウザの実行ファイルの絶対パス、開きたいhtmlファイルの絶対パスを入れれば開けるはずです。 相対パスにするのなら ブラウザの実行ファイルの相対パス:javaコマンドを実行するディレクトリからの相対パス HTMLファイルの相対パス:ブラウザの実行ファイルのあるディレクトリからの相対パス で記述する必要があります。