JFileChooser getCurrentDirectory возвращает неправильный текущий каталог? - PullRequest
9 голосов
/ 06 января 2012

Я использую JFileChooser в приложении для поиска каталога, однако, когда я выбираю каталог, он возвращает путь к папке над папкой, которую я выбрал. то есть я выбираю "C: \ Test" и он возвращает "C: \"

Вот код, который я использую

            JFileChooser c = new JFileChooser();
            c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            int rVal = c.showSaveDialog(c);
            if (rVal == JFileChooser.APPROVE_OPTION) {
                txtDirectory.setText("");
                CC_Test.MsgBox(c.getCurrentDirectory().toString());
                txtDirectory.setText(c.getCurrentDirectory().toString());
            }
            if (rVal == JFileChooser.CANCEL_OPTION) {
                txtDirectory.setText("");
            }

Ответы [ 3 ]

15 голосов
/ 06 января 2012

Вы должны использовать

c.getSelectedFile()

вместо

c.getCurrentDirectory()

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

3 голосов
/ 06 января 2012

Вы должны использовать JFileChooser.getSelectedFile(). Класс File предназначен как для каталогов, так и для файлов.

3 голосов
/ 06 января 2012

Для получения выбранного файла или каталога используйте:

c.getSelectedFile();

Если вы используете

c.getCurrentDirectory();

, возврат зависит от операционной системы.

...