web-dev-qa-db-ja.com

デフォルトのテキストエディタでテキストファイルを開きます... Java経由ですか?

OK。簡単な質問。しかし、それほど単純な答えではないかもしれません:

Javaでダウンロードしたファイルがあり、それがテキストファイルであることを知っています。 Javaを使用して、デフォルトのテキストエディタでそのテキストファイルを開く方法はありますか?すべてのOSで機能する必要があります。そうでない場合は、メモ帳で開くだけです。

:\これを行う方法がない場合は、JOptionPaneを使用してテキストファイルの内容を表示できると思います...

23
user765383

あなたはそれをすることができます:

Java.awt.Desktop.getDesktop().edit(file);

これはJava.awt.Desktopのチュートリアル記事にリンクしています

Java™StandardEditionバージョン6は、ネイティブアプリケーションとJavaアプリケーションのパフォーマンスと統合の間のギャップを狭めます。新しいシステムトレイ機能、スプラッシュスクリーンのサポート、およびJTablesの拡張印刷に加えて、Java SEバージョン6は、Desktop API(Java.awt.Desktop)APIを提供します。これにより、Javaアプリケーションは、ホストプラットフォーム上の特定のファイルタイプに関連付けられたデフォルトアプリケーションと対話できます。 。

クロスプラットフォームですが、どこでもサポートされているとは限りません。デスクトップAPIが使用可能かどうかを確認するために呼び出すことができるisDesktopSupportedというメソッドがあります(詳細については、リンクを参照してください)。先日、このAPIを使用してSwingクライアントでPDFを開きました。

残念ながら、JVMをクラッシュさせる 一部のWindowsプラットフォーム(XPおよび2003)に影響する既知のバグ があります。 通常どおり、一度書き込み、どこでもデバッグします。とにかく、Windowsの場合は 適切な回避策 がありますが、これでもユーザーの好みのアプリケーションを使用します。

if (System.getProperty("os.name").toLowerCase().contains("windows")) {
  String cmd = "rundll32 url.dll,FileProtocolHandler " + file.getCanonicalPath();
  Runtime.getRuntime().exec(cmd);
} 
else {
  Desktop.getDesktop().edit(file);
}
35
Nathan Hughes
Desktop.getDesktop().edit(File f);
6
Stas Jaro

確かに、テキストエディタで設定し、Runtime.execを使用して起動することができます。しかし、特にシステムに依存しない方法で、デフォルトのエディターを決定する方法は考えられません。

おそらくあなたの最善の選択肢は、あなたが使用しているいくつかの最も人気のあるプラットフォームのどれを特定し、次にそのプラットフォームでデフォルトのエディタを起動する方法を見つけることです。たとえば、Windowでは、「start filename.txt」を実行するとデフォルトのエディタが表示され、Linuxに相当するものがあると確信しています。

0
Hot Licks