2013-03-20 13 views
10

System.getenv("PATH")を使用してパスを印刷できます。 それから私はおそらくそれらのパスをトラバースし、ファイルが存在するかどうかを確認するためにFileを使用します。Java、PATH環境に実行ファイルが存在するかどうか確認してください

Javaの方が速い方法はありますか?

+1

あなたが提案したものよりも良い方法があるとは思わないでください。 – Miquel

+0

@NixはSCALAの質問ですか?私はJAVAの男で質問しています – w00d

+0

@ w00dあなたは以下の答えとその質問の答えの間に類似点がありますか?このリンクも同じテーマにありますhttp://stackoverflow.com/questions/2439984/how-to-check-if-a-program-is-installed-on-system。ちょっと時間をかけて自分の「おい」を調べてください。 – Nix

答えて

-1

Runtime.getRuntime().exec("command");try ... catchセクションに使用できます。アプリがPATHにない場合は、例外が発生します。

[EDIT]

しかし...これはチェックするのではなく、アプリを実行します。ごめんなさい。

+1

これは実際にコマンドを実行することの副作用がありませんか? –

2

あなたのアプローチはうまくいくでしょう。

パスの各ディレクトリでFile.listFiles(FileFilter filter)メソッドを使用することをおすすめします。これにより、各ディレクトリの検索が簡単になります。

3

Javaの方が速い方法はありますか?

パフォーマンス面では、

コーディングの面では、おそらくいいえ。確かに、実行可能ファイルが存在するかどうかを調べるためにコマンド検索パスを検索するサードパーティのJavaライブラリは認識していません。

残念ながら、Windows上で実行可能ファイルを検索するのは少し難解です。ファイルサフィックスに基づいてさまざまなタイプの実行可能ファイルを考慮する必要があるからです。 Linux/Unixでも、新しいJava 7ファイル属性APIを使用して、候補ファイルに実行権限が設定されているかどうかを判断する必要があります。

(いくつかのコマンドは無害な方法で実行できることを認識しています;例えば、バージョン文字列を出力するオプション/引数、またはヘルプ情報をサポートしているかもしれませんが、 UNIX/Linuxでは、 "whereis"というシェルコマンドが組み込まれているので、指定された名前の実行可能コマンドが検索パス上に存在するかどうかを知ることができます。

関連する問題