текстовый редактор системы вызова - PullRequest
2 голосов
/ 07 мая 2009

У меня есть настольное приложение Java, которое работает с файлами CSV. И я хочу добавить немного функциональности. В данный момент мне нужно открыть выбранный файл с помощью системного текстового редактора по умолчанию. Когда я запускаю свою программу в Windows, у меня не возникает проблем, просто вызывая notepad.exe, но что делать с * nix системами? Одним из способов решения этой проблемы является выбор пути к предпочитаемому текстовому редактору в настройках программы, но это не лучшее решение ...

Но, может быть, было бы лучше добавить в программу собственный текстовый редактор, даже с меньшим количеством функций?

Ответы [ 3 ]

6 голосов
/ 07 мая 2009

Я думаю, java.awt.Desktop.edit() может быть тем, что вы ищете, хотя он будет запускаться независимо от того, что операционная система думает, что файл должен быть отредактирован, что в случае с CSV обычно является приложением для работы с электронными таблицами чем текстовый редактор - возможно, вы можете переименовать файлы в TXT временно или навсегда.

2 голосов
/ 07 мая 2009

Для такой функциональности я считаю, что гораздо лучше использовать 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});
1 голос
/ 07 мая 2009

Попробуйте это:

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 не будет разрешен.

Это не открывает текстовый редактор, хотя, как упоминал Майкл Боргвардт. Он открывает MS Excel в моем случае.

Для получения дополнительной информации вы можете посмотреть в Java API:

java.awt.Desktop

java.io.File

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...