Как получить каталог и его внутреннее содержимое каталога до дочернего уровня с помощью JFileChooser

Я пытаюсь получить содержимое каталога в приложении Swing. Я узнал, что JFileChooser можно использовать для извлечения содержимого определенного каталога (скажем, /X/), но только до одного уровня вниз (x/a.txt или x/b.txt, а не x/y/z.txt). Что, если я хочу получить все содержимое X, Y и даже других внутренних каталогов, содержащихся в более глубоких слоях других папок (y/as/sd/). Должны ли мы запускать какой-либо рекурсивный цикл, чтобы получить такое содержимое, или у нас есть какая-либо утилита для этого. Надеюсь, мой вопрос имел смысл. Нужно предложение!


person 1CzDx    schedule 01.02.2014    source источник
comment
Да, рекурсивно получать файлы в каталоге несложно, и это не имеет ничего общего с JFileChooser, но я не уверен в вашей реальной проблеме. Расскажите, пожалуйста, подробнее о вашей конечной цели, о том, что вы хотите делать с этими данными.   -  person Hovercraft Full Of Eels    schedule 01.02.2014
comment
Вот код с использованием java nio API stackoverflow.com/a/13539602/295765   -  person qza    schedule 01.02.2014


Ответы (1)


Должны ли мы запустить какой-либо рекурсивный цикл, чтобы получить такое содержимое,..

Да.

..или у нас есть какая-нибудь утилита для этого.

Вы говорите, что рекурсивное получение файлов сложно! Это действительно очень легко.

  • Создайте метод, который принимает каталог в качестве аргумента.
  • Перечислите файлы.
  • Check each file:
    • If it is a file (as opposed to a directory), add it too an expandable list (e.g. ArrayList<File>).
    • Если это каталог, снова вызовите метод с этим каталогом.
  • После завершения этого процесса расширяемый список должен содержать все файлы (не каталоги).
person Andrew Thompson    schedule 01.02.2014
comment
Или вы можете просто пройтись по дереву файлов с помощью новых нио... но в чем прикол ;) +1 - person MadProgrammer; 01.02.2014
comment
@MadProgrammer Да .. Я склонен отставать на одну версию от текущей основной версии при разработке настольных приложений. Хотя, учитывая недавние опасения по поводу безопасности и автоматическое обновление, я сомневаюсь в целесообразности сохранения такой позиции. - person Andrew Thompson; 01.02.2014
comment
Мы все еще активно развиваемся под 6 без какого-либо рассмотрения 7 в ближайшем будущем, единственное, что я получаю из 7 прямо сейчас, это алмазный оператор ;) - person MadProgrammer; 01.02.2014