Команда открытия Java getDesktop()

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

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

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

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

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


person Ryan    schedule 14.07.2010    source источник


Ответы (1)


К сожалению, здесь не удается воспроизвести вашу проблему с помощью этого базового примера запуска:

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)?

person BalusC    schedule 14.07.2010
comment
Я делаю все это правильно, возможно, это зависит от системы. Я разрабатываю на Linux, попробую на окне Windows и посмотрю, что произойдет. - person Ryan; 14.07.2010
comment
Еще одно обновление - оно на самом деле отлично работает в режиме отладки с точками останова в Netbeans, но когда я запускаю его по-настоящему, оно терпит неудачу... просто подумал, что это может быть примечательным. - person Ryan; 14.07.2010