Java getDesktop () открытая команда - PullRequest
3 голосов
/ 14 июля 2010

Я пытаюсь использовать вызов Java Desktop / getDesktop () / open () для открытия текстового (простого ASCII) файла с помощью системного редактора по умолчанию.Я использую FileWriter / PrintWriter для записи в файл, очистки его, закрытия, но получаю исключение.

  1. Я использую тот же объект File в моем desktop.open(savefile) как я в моем FileWriter fw = new FileWriter(savefile) вызове.

  2. Я могу открыть любой другой тип файла без проблем, включая другие текстовые файлы.

  3. Если я приостанавливаю программу сразу после записи и заменяю выведенный файл файлом, созданным с помощью текстового редактора, ТО затем выберите «открыть» в моем диалоговом окне, оно открывается идеально ... просто кажется, что мои текстовые файлы не создаютсяс правильным заголовком или мета-информацией, которая позволяет Desktop знать, что с ним делать.

Буду признателен за любую помощь или опыт.Есть ли «официальный» файловый редактор, который можно использовать при работе с текстом?

1 Ответ

3 голосов
/ 14 июля 2010

Извините, вы не можете воспроизвести вашу проблему здесь в следующем базовом примере:

File file = new File("/test.txt");
FileWriter writer = null;
try {
    writer = new FileWriter(file);
    writer.write("test");
} finally {
    if (writer != null) writer.close();
}
Desktop.getDesktop().open(file);

Ваша проблема лежит в другом месте.Возможно, вы закрываете неправильный дескриптор Writer (вы должны закрывать "самый внешний" писатель, например, если вы обернули FileWriter в BufferedWriter, вы должны закрыть BufferedWriter вместо этого) или делаете это слишком поздно (например, звонить Desktop#open() внутрь try, пока вы делаете близкое в finally)?

...