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