呼叫系统文本编辑器

时间:2009-05-07 10:12:28

标签: java text editor

我有使用CSV文件的Java桌面应用程序。我想添加一些功能。此时我需要使用默认的系统文本编辑器打开所选文件。当我在Windows上运行我的程序时我没有问题,只需调用notepad.exe,但是如何处理* nix系统? 解决方案的一种方法是在程序选项中自定义设置文本编辑器的方式,但这不是最佳解决方案......

但也许最好添加到程序自己的文本编辑器,即使功能较少?

3 个答案:

答案 0 :(得分:6)

我相信java.awt.Desktop.edit()可能正是您所寻找的,虽然它会启动操作系统认为应该编辑该文件的任何内容,在CSV的情况下通常是电子表格应用而不是文本编辑器 - 也许你可以暂时或永久地将文件重命名为TXT。

答案 1 :(得分:2)

对于此类功能,我认为使用JTextArea并提供您自己的基本文本编辑器要好得多。

无论如何,请看BareBonesBrowserLauncher。它是一个Java类,允许您在任何平台上启动默认浏览器。您可以根据自己的需要进行调整。从那里复制:

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});

答案 2 :(得分:1)

试试这个:

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();
        }
    }

}

如果该应用程序适用于Mac,请记得将库从默认的Mac OS 10.5(JVM 1.5)更改为JVM 1.6,否则将无法解析java.awt.Desktop。

这不会打开文本编辑器,正如Michael Borgwardt所提到的那样。它在我的情况下打开MS Excel。

如需了解更多信息,请查看java api:

java.awt.Desktop

java.io.File