• ベストアンサー

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

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

  • Java
  • 回答数5
  • ありがとう数5

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

  • ベストアンサー
回答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ファイルの相対パス:ブラウザの実行ファイルのあるディレクトリからの相対パス で記述する必要があります。

関連するQ&A

  • Runtime.execについての質問

    こんにちは、Makotoと申します。 Runtime.execを使って、ディレクトリを作成する プログラムを作っているのですが、下記のプログラムで ディレクトリは作成されるのですが、コマンドプロンプト画面が 立ち上がったままになってしまいます。閉じようと思い、8行目でexitコマンド を発行してみたのですが、うまくいきませんでした。このウィンドウを閉じる 方法はあるのでしょうか? 1:public class test{ 2:  public static void main(String[] args) throws Exception { 3:    Runtime rt = Runtime.getRuntime(); 4:    Process pr; 5:    try { 6:      Process proc1 = rt.exec("cmd /C start /MIN 7:               mkdir c:\\\poi\\test"); 8:      proc1 = rt.exec("command.com, /, exit"); 9:    } catch (java.io.IOException e) { 10:     System.err.println(e); 11:     System.exit(1); 12:    } 13: 14: } 15:}

    • ベストアンサー
    • Java
  • javaからバッチファイル実行

    お世話になります。 javaプログラムからバッチファイルを呼び出して実行するようにしたいのですが、上手くいきません。 サイトを参考に以下のように書いてみましたが、 バッチファイルの一行目のみ実行している?ようで、二行目以降の処理をしていないようです。 バッチファイル単体での実行は正常に動作しています。 お気づきの点がありましたら教えて頂けないでしょうか。 try { String[] cmd = {"バッチファイルのパス"}; Process p = Runtime.getRuntime().exec(cmd); while(true){ try{ p.exitValue(); }catch(IllegalThreadStateException e){ continue; } break; } } catch (IOException e) { e.printStackTrace(); }

    • ベストアンサー
    • Java
  • 外部コマンドを実行する方法

    sdk 1.4.2_08 OS WindowsXp try{ Process process = Runtime.getRuntime().exec(...); }catch(IOException e){} を使用して,コマンドを実行しようとしています.しかし,IOExceptionとなってしまいます. exec(...) に記述してある内容をコピーして,コマンドラインから実行できることは確認しましたし,パスも大丈夫でした. また空白が認識されない場合があることから, String cmd[] = {"コマンド","引数1","引数2"}; Process process = Runtime.getRuntime().exec(cmd); と行ってもダメでした. また,ためしにこのコンパイル済みのclassファイルをLinuxで動作させたところ,正常の動作できることがが確認できました.(windowsとLinuxに同じ名前のコマンドがあるのです.また,Linuxは fedora core4 です.) Windows上のコマンドに問題があるようなのですが,何か原因となる要因が,他にもありそうでしたらアドバイスお願いいたします.

    • ベストアンサー
    • Java
  • JAVAで外部ファイルの実行

    JAVAで外部ファイルを実行したいのですが、 myjbutton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ Runtime myruntime=Runtime.getRuntime(); try{Process myprocess=myruntime.exec("cmd.exe");}catch(IOException e){}; }}); ボタンを押して、実行させたいのですが、これが 全く起動しません。notepad.exeなども試しました が無理でした。 アドバイスがあれば、教えてください。お願いします。

    • ベストアンサー
    • Java
  • ディレクトリを変更して外部コマンド実行

    いつもお世話になってます。 Runtime.execを使用してディレクトリ情報を txtファイルに出力しようとしているのですが、 現在のカレントディレクトリのものは出力できるのですが、 例えば、dドライブのtestフォルダに移動して 出力というのをどうやればいいのかわかりません。 ネットでいろいろ調べてみたものの、どうしてもわかりませんでした。 よろしくお願いします。 下記はカレントディレクトリの情報をそのままtxtファイルに出力したものです。 String command2 = "cmd /c dir > d:\\testest.txt"; Process process = Runtime.getRuntime().exec(command2);

    • ベストアンサー
    • Java
  • javaアプリケーションからコマンド実行結果の取得

    javaアプリケーションからcatコマンドを実行し、その結果を取得したいのですが、うまくいきません。runtime.exec()実行中にエラーとなります。 String cmd = "cat error.log; echo $status"; Runtime runtime = Runtime.getRuntime; Process process = runtime.exec(cmd); rshを使うとOKです。 "rsh localhost cat error.log; echo $status" shを使うとNGです。 "sh -c cat error.log; echo $status" "sh -c \"cat error.log\"; echo $status" ターミナルからは上記で内容取得、および、結果取得はできるのですが。 環境は、UNIX JDK1.2.1です。 よろしくお願いします。

  • Java getRuntime().exec() でのパイプ利用に関して。

    はじめまして。 JavaのgetRuntime().execでコマンドプロンプトを動かそうと思っております。 コマンドプロンプトで「netstat -an | find "***"」というコマンドをJavaから実行したいと思っています。 しかし、Javaではパイプ(=|)を利用したコマンドは実行できない。 ということを検索してたどり着きました。 例などでは、「シェル」を利用しろ。などとかかれていましたが何をどうすればいいかわかりません。 String[] s = {"netstat","-an"}; Process process = Runtime.getRuntime().exec(s); 今は上記の状態で「netstat -an」が実行されています。 どうすれば「find "***"」で***の検索をかけることができるでしょうか? どうぞ、よろしくお願いいたします。

    • ベストアンサー
    • Java
  • Javaプログラムでコマンド実行時のエラー

    Webアプリにて下記プラグラムを実行(Tomcat上で実行)したところ以下のような例外が でました。 cd /home/test/geniatagger-3.0.1 ディレクトリに移動するコマンドで失敗しているようですが Teraterm上で手入力で実行すると実行できます。 何が原因かわかりますでしょうか。 【例外】 java.io.IOException: Cannot run program "cd /home/test/geniatagger-3.0.1": java.io.IOException: error=2, No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:475) at java.lang.Runtime.exec(Runtime.java:610) at java.lang.Runtime.exec(Runtime.java:483) 【実行したプログラム】 String[] command = {"cd /home/test/geniatagger-3.0.1", "./geniatagger", "I had a pen."}; Process process = Runtime.getRuntime().exec(command); //exec()が非同期実行であるため実行結果が返ってくるまで待つ int no = process.waitFor(); BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream())); String str = ""; while (in.ready()) { str = in.readLine(); System.out.println("segmentate=" + str); } in.close();

    • ベストアンサー
    • Java
  • Javaプログラムから外部コマンドを呼び出す

    String com = "ls -l"; Process pro = Runtime.getRuntime().exec(com); 上記のようにして、外部コマンドを実行しています。 この方法を使用すると投げたコマンドが終了してしまうまで、後の処理が行われません。 バックグラウンド処理を行いたかったので、 String com = "ls -l &"; Process pro = Runtime.getRuntime().exec(com); としてみましたが、結果は変わりませんでした。 何か別の指定方法が存在するのでしょうか。 ご存知の方、ぜひ教えてください。

    • ベストアンサー
    • Java
  • javaプログラミングにおけるバッチファイル起動

    JavaのプログラムからNetbeansを用いてバッチファイルを起動させることを考えています。 以下のようにプログラムを作成したところ、コマンドプロンプトの画面は表示されるのですが、バッチファイルの中身が起動されません。 どのようにしたらよろしいかお知恵を拝借願います。 public class Open_JTalk { private Process p; private void start() { try { //String command = "cmd.exe /c start"; String command = "cmd.exe /c start lib/open_jtalk/m001_106.bat"; p = Runtime.getRuntime().exec(command); } catch (Exception e) { } } public static void main(String args[]) { Open_JTalk jtalk = new Open_JTalk(); jtalk.start(); } } バッチファイルを動かすのみの処理で、 String command = "lib/open_jtalk/m001_106.bat"; とした場合は何も処理されずにプログラムが終了してしまいます。 また、バッチファイルはlib/open_jtalk/に配置済みです。 ディレクトリのbatファイルをクリックで動かした場合には正常に起動しています。 どうかよろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう