Как да получите директория и нейното вътрешно съдържание на директория до дъщерно ниво с помощта на 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
Или можете просто да обходите дървото на файловете с новия Java 7 nio...но къде е забавлението в това ;) +1 - person MadProgrammer; 01.02.2014
comment
@MadProgrammer Да.. Склонен съм да изоставам с една версия спрямо текущата основна версия, когато разработвам приложения за настолни компютри. Въпреки че предвид неотдавнашните опасения за сигурността и автоматичното актуализиране, аз се съмнявам в мъдростта да поддържам тази позиция. - person Andrew Thompson; 01.02.2014
comment
Все още активно разработваме под 6, без да обмисляме 7 в близко бъдеще, приблизително единственото нещо, което получавам от 7 в момента, е операторът на диаманта;) - person MadProgrammer; 01.02.2014