プロが教える店舗&オフィスのセキュリティ対策術

通常は、下記のような記述をすれば、html.htmlファイルを開けると思うのですが開けせん。どうすれば、開くことができますか?

また、ディスクトップで実行しているのですが、Javaファイルと同じディレクトリ(デスクトップ)にあるhtml.htmlファイルを開くことはできないのしょうか?
相対パスで記述するとエラーになります。

初歩的な質問かもしれませんが、ご教示、宜しくお願い致します。

String[] cmd = {"C:\\html.html"};
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd);

A 回答 (5件)

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"}
に変えればうまくいくと思います。
    • good
    • 1
この回答へのお礼

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

お礼日時:2005/05/06 22:38

こんにちは。


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); //エラー出力
}
}
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/05/06 22:34

>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)
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/05/06 22:36

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ですね。

この回答への補足

早速、回答いただきありがとうございます。
現在、下記のように、書き換えてみたのですが、残念ながらうまくいきませんでした。
多分、ファイルを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で開いてくれるみたいです。

補足日時:2005/05/06 20:45
    • good
    • 0

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!