У меня есть класс FileSaver, который расширяет класс JFileChooser. Конструктор определяет некоторые файловые фильтры, устанавливает файловый фильтр по умолчанию и вызывает setAcceptAllFileFilterUsed(false)
. Когда пользователь нажимает кнопку, создается объект FileSaver и для него вызывается showSaveDialog()
. Класс FileSaver переопределяет approveSelection()
, чтобы он мог проверить введенное имя файла перед вызовом super.approveSelection()
.
Это нормально для большинства вводимых имен файлов, но если имя файла содержит вопросительный знак ("?") или звездочку ("*"), то approveSelection()
не вызывается и создается новый файловый фильтр (и отображается установленным, в то время как программа в основном обрабатывает файловый фильтр в качестве предыдущей настройки) с именем файла в качестве описания. Можно ли обращаться с этими именами файлов так же, как с любыми другими (такими, что вызывается approveSelection()
и соответственно устанавливается выбранный файл)?
Кроме того, кажется, что имя файла, содержащее косую черту ("/"), рассматривается как путь относительно текущего каталога, и поэтому getSelectedFile().getName()
возвращает только часть имени файла после косой черты (или удаляет косую черту в конце имя файла) и часть перед добавлением к пути к каталогу. Может ли approveSelection()
получить полное имя файла для проверки и не изменять каталог?