首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用系统文本编辑器

调用系统文本编辑器
EN

Stack Overflow用户
提问于 2009-05-07 10:12:28
回答 3查看 3.2K关注 0票数 2

我有与CSV文件一起工作的Java桌面应用程序。我想要添加一些功能。此时,我需要用默认的系统文本编辑器打开选定的文件。当我在Windows上运行我的程序时,只要调用notepad.exe就没有问题,但是*nix系统该怎么办呢?一种解决方法是在程序选项中自定义设置首选文本编辑器的方式,但这不是最好的解决方案...

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-07 10:31:28

我相信java.awt.Desktop.edit()可能就是你想要的,尽管它会启动操作系统认为应该用来编辑文件的任何东西,在CSV的情况下,这通常是一个电子表格应用程序,而不是文本编辑器-也许你可以暂时或永久地将文件重命名为TXT。

票数 6
EN

Stack Overflow用户

发布于 2009-05-07 10:29:24

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

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2009-05-07 12:19:31

试试这个:

代码语言:javascript
复制
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的,请记住将库从默认的MacOS10.5(JVM1.5)更改为JVM1.6,否则java.awt.Desktop将无法解析。

但是,正如Michael Borgwardt所提到的,这不会打开文本编辑器。在我的例子中,它会打开MS Excel。

有关更多信息,请查看java api:

java.awt.Desktop

java.io.File

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/833828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档