Java JFileChooser getAbsoluteFile Добавить расширение файла

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

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

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 решило эту проблему.


person Community    schedule 28.04.2010    source источник


Ответы (3)


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

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");
    }
}
person Community    schedule 03.05.2010

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

Хитрость заключается в приведении возвращенного 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];
person Community    schedule 30.05.2013

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

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

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

person Mia Clarke    schedule 02.05.2010