Это абсолютно зависит от файловой системы. Много современных файловых систем используют достойные структуры данных для хранения содержания каталогов, но более старые файловые системы часто просто добавили записи в список, так получение файла было O (n) операция.
, Даже если файловая система делает его правильно, для программ все еще абсолютно возможно, что содержание каталога списка, чтобы испортить и сделать O (n^2) вид, так чтобы быть на безопасной стороне, я всегда ограничивал бы количество файлов на каталог к не больше, чем 500.
Предполагая, что вы решили использовать FileDialog вместо переносимого JFileChooser, вам необходимо установить системное свойство так, чтобы создаваемые FileDialogs предназначались для каталогов.
Рассматриваемое свойство - apple.awt.fileDialogForDirectories
.
Так что просто сделайте следующее:
System.setProperty("apple.awt.fileDialogForDirectories", "true");
FileDialog fd = new FileDialog(this);
fd.setDirectory(_projectsBaseDir.getPath());
fd.setLocation(50,50);
fd.setVisible(true);
File selectedFile = new File(fd.getFile());
System.setProperty("apple.awt.fileDialogForDirectories", "false");
Следует отметить, что это не переносимо, однако, поскольку вы хотите заменить переносимый JFileDialog, я полагаю, что это не проблема.
Я пытаюсь переключиться с использования JFileChooser на FileDialog, когда мое приложение запускается на Mac, чтобы оно использовало средство выбора файлов OSx
Я бы посоветовал вам попробовать оставайтесь в мире Swing и избегайте более тяжелого мира AWT. Есть способы обойти проблемы с Swing L&F на Mac, если это ваша проблема. Взгляните на этот пост на более ранний вопрос , который ссылается на сайт, который показывает, как получить правильные значки Mac в средстве выбора файлов.
Простите, что я не совсем отвечаю на ваш вопрос. Если есть другие причины, по которым вы предпочли бы остаться с FileDialog
, я с радостью удалю этот пост.