Jfilechooser - установить каталог в путь в файле

Я пытаюсь установить путь каталога в JFilechooser через что-то вроде этого (используя commons-io):

String fileContents = IOUtils.toString(new FileInputStream("path.txt"));
File theDirectory = new File(fileContents);

filechooser = new JFileChooser();
fileChooser.setCurrentDirectory(theDirectory);
filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

Я использую getCanonicalPath() для получения пути и записи в файле path.txt

path = file.getCanonicalPath();

Я не собираюсь размещать весь мой код здесь, но я уверен, что программа записывает и читает путь в path.txt. Я не получаю никаких ошибок, но каждый раз, когда я запускаю программу, он всегда открывает JFilechooser в папке моих документов. Что я делаю неправильно?

Ответы

Ответ 1

Попробуйте передать текущий каталог непосредственно в конструкторе:

filechooser = new JFileChooser(theDirectory);

Ответ 2

Если вы обратитесь к API, используя конструктор по умолчанию (т.е. new JFileChooser()):

Создает JFileChooser, указывающий на каталог пользователя по умолчанию. Эта по умолчанию зависит от система. Обычно это "Мой Документы" в Windows и пользовательский домашний каталог в Unix.

Казалось бы, это всегда открывалось для моих документов, но эта не ваша проблема. На самом деле ваша проблема заключается в установке текущего каталога (т.е. setCurrentDirectory(theDirectory)):

Устанавливает текущий каталог. Передача null задает выборщик файлов для указания на каталог пользователя по умолчанию. Эта по умолчанию зависит от система. Обычно это "Мой Документы" в Windows и пользовательский домашний каталог в Unix. Если файл передается как currentDirectory а не каталог, родительский файл будет использоваться как Текущий каталог. Если родитель не пройденный, то он будет родительского дерева, пока не найдет трассируемая директория или root из файловой системы.

При этом я бы обратил внимание на выделенный текст, поскольку кажется, что вы устанавливаете файл как текущий каталог, а не каталог.

Ответ 3

Для выбора последнего каталога, который вы открываете:

chooser.setCurrentDirectory(lastDirectory);

int r = chooser.showOpenDialog(new JPanel());

if (r == JFileChooser.APPROVE_OPTION) {
   fileName = chooser.getSelectedFile().getPath();
   lastDirectory = chooser.getSelectedFile();
}

Ответ 4

JFileChooser Chooser = новый JFileChooser ( "F:" );

Ответ 5

В объявлении основного класса

public static String dirpath=".";

private void btnBrowseActionPerformed(java.awt.event.ActionEvent evt) {    
 JFileChooser jfc = new JFileChooser(dirpath);
 dirpath =jfc.getSelectedFile().getAbsolutePath().toString();
}