【问题标题】:call system text editor呼叫系统文本编辑器
【发布时间】:2009-05-07 10:12:27
【问题描述】:

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

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

【问题讨论】:

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

标签: java text editor


【解决方案1】:

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

【讨论】:

    【解决方案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});
    

    【讨论】:

      【解决方案3】:

      试试这个:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        • 1970-01-01
        • 1970-01-01
        • 2021-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多