I want to limit my users to a directory and its sub directories but the "Parent Directory" button allows them to browse to an arbitrary directory.
How should I go about doing that?
JFileChooser. setMultiSelectionEnabled(true) − To enable the multiple selection of file.
JFileChooser has a method, getSelectedFile(). Which is a File. If you open the dialog with showSaveDialog() you should be able to get the File from that (file. getName()).
Incase anyone else needs this in the future:
class DirectoryRestrictedFileSystemView extends FileSystemView { private final File[] rootDirectories; DirectoryRestrictedFileSystemView(File rootDirectory) { this.rootDirectories = new File[] {rootDirectory}; } DirectoryRestrictedFileSystemView(File[] rootDirectories) { this.rootDirectories = rootDirectories; } @Override public File createNewFolder(File containingDir) throws IOException { throw new UnsupportedOperationException("Unable to create directory"); } @Override public File[] getRoots() { return rootDirectories; } @Override public boolean isRoot(File file) { for (File root : rootDirectories) { if (root.equals(file)) { return true; } } return false; } }
You'll obviously need to make a better "createNewFolder" method, but this does restrict the user to one of more directories.
And use it like this:
FileSystemView fsv = new DirectoryRestrictedFileSystemView(new File("X:\\")); JFileChooser fileChooser = new JFileChooser(fsv);
or like this:
FileSystemView fsv = new DirectoryRestrictedFileSystemView( new File[] { new File("X:\\"), new File("Y:\\") }); JFileChooser fileChooser = new JFileChooser(fsv);
You can probably do this by setting your own FileSystemView.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With