Я использую java.awt.FileDialog для создания диалогового окна для сохранения файла. Проблема в том, что когда я указываю предлагаемое (по умолчанию) имя файла, FileDialog удаляет его расширение. Пример:
import java.awt.*;
import java.io.*;
public class SaveFile {
public static void main(String[] args) {
FileDialog fileDialog = new FileDialog(new Frame(), "Save", FileDialog.SAVE);
fileDialog.setFilenameFilter(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
});
fileDialog.setFile("Untitled.txt");
fileDialog.setVisible(true);
System.out.println("File: " + fileDialog.getFile());
}
}
Я ожидал, что когда появится FileDialog, имя файла по умолчанию будет «Untitled.txt», но вместо этого это будет просто «Untitled». Когда пользователи нажимают «Сохранить», я получаю имя файла без расширения. FileDialog делает это как в Windows, так и в OS X.
Я не понимаю. Почему FileDialog намеренно удаляет расширение? Есть ли для этого какая-то логическая причина? В документации это не обсуждается. В качестве обходного пути я мог бы просто добавить расширение к строке, возвращаемой FileDialog, но все же это похоже на ошибку ...
(Обратите внимание, что я не могу использовать JFileChooser; мне нужен собственный AWT FileDialog. )