2009-05-07 1 views
2

CSVファイルで動作するJavaデスクトップアプリケーションがあります。そして私はいくつかの機能を追加したい。現時点では、デフォルトのシステムテキストエディタで選択したファイルを開く必要があります。私のプログラムをWindowsで走らせても問題はありません。notepad.exeを呼び出すだけですが、* nixシステムとどうすればいいですか? 解決策の1つの方法は、プログラムオプションでテキストエディタを優先する方法をカスタム設定することですが、最適な解決策ではありません。コールシステムテキストエディタ

多分、 ?

+0

私が間違っているかもしれないが、* nixのは、通常はデフォルトのエディタのための変数を持っていませんか? – willcodejavaforfood

+0

面白いですが、今朝ちょっと驚いたことに、Windows®でデフォルトのテキストエディタを呼び出すにはどうすればいいのですか?☺GNU/Linuxでは "$ EDITOR"変数になりますが、Windows用の方法はわかりませんでした。 'notepad.exe'を呼び出すことはフォールバックの動作でなければならないと私は考えています。ほとんどの場合、ユーザーには好みのエディタがあります。しかし、私はWindows®上で、そのタイプに応じてファイルを開くDEの機能を呼び出さなければならないことに気がつきました。 –

答えて

6

は、私は、あなたが探しているものかもしれjava.awt.Desktop.edit()を信じてテキストエディターではなく、一時的または永続的にファイルの名前をTXTに変更することができます。

2

このような機能については、JTextAreaを使用し、独自の基本的なテキストエディタを提供する方がはるかに良いと思います。

とにかく、BareBonesBrowserLauncherをご覧ください。これは、任意のプラットフォームでデフォルトのブラウザを起動できるようにするJavaクラスです。あなたのニーズに合わせて調整することができます。そこからコピーされた:それはOSがファイルはCSVの場合には通常、むしろスプレッドシートアプリである、で編集する必要があると考えるものは何でも起動しますが、

String[] editors = { "vim", "emacs", "vi",}; 
String editor = null; 
for (int count = 0; count < editors.length && editors == null; count++) 
    if (Runtime.getRuntime().exec(new String[] {"which", editors[count]}).waitFor() == 0) 
     editor = editors[count]; 
if (editor == null) 
    throw new Exception("Could not find editor"); 
else Runtime.getRuntime().exec(new String[] {editor, filename}); 
+0

シンプルなCSV編集の場合はJTextAreaの+1 – Mark

1

これを試してみてください:Macはそうjava.awt.Desktopが解決されないJVM 1.6にデフォルトのMac OS 10.5(JVM 1.5)からライブラリを変更することを忘れないでくださいためのアプリケーションである

import java.awt.Desktop; 
import java.io.File; 
import java.io.IOException; 

public class systemEditor { 

    public static void main(String[] args) { 
     Desktop dt = Desktop.getDesktop(); 
     try { 
      dt.open(new File("FileName.csv")); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

} 

場合。

これは、マイケルボルグワルトと同じように、テキストエディタを開きません。私の場合はMS Excelを開きます。あなたはJava APIでは見ることができます任意の詳細情報については

java.awt.Desktop

java.io.File