jfilechooser - установить каталог для пути в файле - PullRequest
15 голосов
/ 19 апреля 2011

Я пытаюсь установить путь к каталогу в 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 в моей папке с документами.

Ответы [ 6 ]

22 голосов
/ 19 апреля 2011

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

filechooser = new JFileChooser(theDirectory);
6 голосов
/ 20 апреля 2011

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

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

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

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

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

1 голос
/ 29 января 2014

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

1 голос
/ 13 ноября 2013

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

chooser.setCurrentDirectory(lastDirectory);

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

if (r == JFileChooser.APPROVE_OPTION) {
   fileName = chooser.getSelectedFile().getPath();
   lastDirectory = chooser.getSelectedFile();
}
0 голосов
/ 24 июня 2018

если вы хотите изменить каталог, используйте метод System.getProperty

String s=System.getProperty("user.dir");  // changes directory from documents to the user current Directory;

JFileChooser jfc = new JFileChooser (s);

0 голосов
/ 01 ноября 2013

В вашем основном классе объявите

public static String dirpath=".";

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