10

I am using JFileChooser in an app to browse for a directory however when I select the directory it returns the path to the folder above the folder I selected. i.e. I select "C:\Test" and it returns "C:\"

Here is the Code I'm Using

            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("");
            }
Talon06
  • 1,756
  • 3
  • 27
  • 51

3 Answers3

16

You should use

c.getSelectedFile()

instead of

c.getCurrentDirectory()

in order to get the selected file (aka directory in this case). Otherwise it yields the directory which is shown in the filechooser's panel (which is the parent) and not the one which is selected.

Howard
  • 38,639
  • 9
  • 64
  • 83
3

For getting the selected file or directory, use:

c.getSelectedFile();

If you use

c.getCurrentDirectory();

the return depends on the operating system.

evanwong
  • 5,054
  • 3
  • 31
  • 44
3

You have to use JFileChooser.getSelectedFile(). The File class is both for directories and files.

Stas Jaro
  • 4,747
  • 5
  • 31
  • 53