Java JFileChooser getAbsoluteFile Добавить расширение файла - PullRequest
3 голосов
/ 28 апреля 2010

У меня есть эта проблема работает, но я хотел бы знать, есть ли лучший способ добавить расширение файла?

что я сейчас делаю:

String filePath = chooser.getSelectedFile().getAbsoluteFile() + ".html";

Я добавляю расширение жестко закодировано. и затем сохранение в нем.

просто интересно, есть ли более надежный / логичный способ, которым это можно реализовать?

спасибо за ваше время.

РЕДАКТИРОВАТЬ: я спрашиваю это, как я хотел бы, чтобы мое приложение было переносимым на разных платформах. поэтому, добавив .html вручную, я могу сделать это решением только для Windows.

РЕДАКТИРОВАТЬ: я думаю, что я достаточно серфил, чтобы знать, что .html жестко запрограммирован безопасно, так как я не нашел никакой документации, которая говорит, что не используйте этот подход (не совсем уверен).

ВЫПУСК: также, если я хочу сохранить файл в другом формате, текст, например, как я могу определить, что пользователь выбрал какой формат?

FileNameExtensionFilter может добавлять фильтры в диалог, но как мне получить возвращаемое значение для выбранного типа файла?

РЕДАКТИРОВАТЬ: я изучил это , но все еще неясно, как получить выбранный пользователем тип файла.

РЕДАКТИРОВАТЬ: это перефразировать мою проблему:

альтернативный текст http://img98.imageshack.us/img98/4904/savef.jpg мой вопрос: как мне найти / узнать, какой из двух фильтров пользователь выбрал в качестве формата сохранения? HTML или JPEG? Как я могу получить эту информацию из JFileChooser? спасибо.

РЕДАКТИРОВАТЬ: обнаружил что-то: это связано с JFileChooser.getFileFilter () Ваша помощь все еще приветствуется.

РЕДАКТИРОВАТЬ: сравнение getFileFilter () и FileNameExtensionFilter решило эту проблему.

Ответы [ 3 ]

2 голосов
/ 03 мая 2010

Вот фрагмент кода, который решает проблему:

JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
chooser.setAcceptAllFileFilterUsed(false);

FileNameExtensionFilter filter = new FileNameExtensionFilter("HTML Documents", "htm", "html");
chooser.setFileFilter(filter);

int option = chooser.showSaveDialog(ChatGUI.this);
if (option == JFileChooser.APPROVE_OPTION) {
    // Set up document to be parsed as HTML
    StyledDocument doc = (StyledDocument)textPaneHistory.getDocument();
    HTMLEditorKit kit = new HTMLEditorKit();

    BufferedOutputStream out;

    try {
        System.out.println(chooser.getFileFilter());

        if (chooser.getFileFilter() == filter)
            System.out.println("ha ha");
    }
}
1 голос
/ 30 мая 2013

Вы, наверное, ищете это:

Хитрость заключается в приведении возвращенного FileFilter к FileNameExtensionFilter и затем применении getExtensions ().

JFileChooser fileChooser = new JFileChooser("");

// Prevent user to use the default All Files option
fileChooser.setAcceptAllFileFilterUsed(false);

[...]

// Get the FileFilter
FileFilter ff = fileChooser.getFileFilter();

// Cast the FileFilter to FileNameExtensionFilter
FileNameExtensionFilter extFilter = (FileNameExtensionFilter)ff;

// Get the Extension
String ext = extFilter.getExtensions()[0];

Или, чтобы сделать его компактным:

ext = ((FileNameExtensionFilter)fileChooser.getFileFilter()).getExtensions()[0];
0 голосов
/ 02 мая 2010

Я не понимаю, что вы пытаетесь сделать.Вы пытаетесь сохранить выбранный файл в другом формате, чем он есть?Путь к выбранному файлу будет содержать расширение файла, поэтому вам не нужно добавлять его вручную.Следующее, например, выведет «/Users/banang/Documents/anything.html» на экран, если выбран файл any.html.

JFileChooser chooser = new JFileChooser();
chooser.showSaveDialog(null);
System.err.println(chooser.getSelectedFile().getCanonicalPath());

Пожалуйста, попробуйте немного уточнить ваш вопрос.

...