JFileChooser возвращает неправильное имя файла? - PullRequest
0 голосов
/ 02 декабря 2011
final JFileChooser fc = new JFileChooser();
int returnVal = fc.showOpenDialog(this);

if (returnVal == JFileChooser.APPROVE_OPTION) {
    String fileName = fc.getSelectedFile().getName();
    String path = (new File(fileName)).getAbsolutePath();
}

Абсолютный путь, который я получаю, - это конкатенация каталога проекта и fileName !

Ответы [ 3 ]

2 голосов
/ 02 декабря 2011

Вот что делает getAbsolutePath() - получает полный путь, включая букву диска (если вы в Windows) и т. Д. Что вы пытаетесь получить, только имя файла?

После инициализации объекта File вы можете получить только имя файла, ИЛИ вы можете использовать JFileChooser.getSelectedFile()

Если вы получаете /path/to/filefilename, но ожидаете /path/to/file/filename, тогда вы можете добавить дополнительную косую черту в путь соответствующим образом.

2 голосов
/ 02 декабря 2011

Конечно.Поскольку вы создали новый файл new File(fileName), используя возвращенное имя файла, это означает относительный путь.Вместо этого используйте fc.getSelectedFile().getPath() или fc.getSelectedFile().getAbsolutePath().

2 голосов
/ 02 декабря 2011

JFileChooser.getSelectedFile() вернуть объект File.

Почему вы получаете имя файла и снова создаете новый объект File?

Можете ли вы попробовать:

fc.getSelectedFile().getAbsolutePath();
...