Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用系统文本编辑器_Java_Text_Editor - Fatal编程技术网

Java 调用系统文本编辑器

Java 调用系统文本编辑器,java,text,editor,Java,Text,Editor,我有一个可以处理CSV文件的Java桌面应用程序。我想增加一些功能。此时,我需要使用默认的系统文本编辑器打开所选文件。当我在Windows上运行我的程序时,只要调用notepad.exe,我就没有任何问题,但是如何处理*nix系统呢? 解决方法之一是在程序选项中自定义设置首选文本编辑器的方式,但这不是最佳解决方案 但是,也许添加到程序自己的文本编辑器会更好,即使功能更少?对于这样的功能,我相信使用和提供自己的基本文本编辑器会更好 不管怎样,请看一看。它是一个Java类,允许您在任何平台上启动默认

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


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

对于这样的功能,我相信使用和提供自己的基本文本编辑器会更好

不管怎样,请看一看。它是一个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});
String[]编辑器={“vim”、“emacs”、“vi”、};
字符串编辑器=null;
对于(int count=0;count
我相信这可能就是你想要的,尽管它会启动操作系统认为应该使用的任何文件编辑,在CSV的情况下,它通常是一个电子表格应用程序,而不是一个文本编辑器-也许你可以暂时或永久地将文件重命名为TXT。

尝试以下方法:

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:


我可能错了,但是*nix通常没有默认编辑器的变量吗?有趣的是,就在今天早上,我还在想,如何在Windows®上调用默认文本编辑器☺ 在GNU/Linux中,它将是“$EDITOR”变量,但我不知道Windows的方法。调用
notepad.exe
应该是一种回退行为,我认为,很可能用户有一个首选编辑器。但我刚刚发现,在Windows®上,我可能必须调用其DE的某些函数,即根据文件类型打开文件的函数。