2014-09-25 3 views
0

Название говорит все. Я хочу, чтобы каталог файлов читался, а затем записывался в TableView. Как это сделать? Я думал о рассмотрении файлов и папок в выбранном каталоге как массиве, а затем открывал и добавлял их один через цикл, но я не знаю, как перевести это в java, стандартные библиотеки не включают полезные методы, кроме открытия одного файла/каталога ,JavaFX - как добавить все файлы из каталога в TableView

+0

Вы хотите, чтобы таблица отображала список файлов? Или содержимое файлов, в некотором роде? –

+0

Да, сейчас я пишу музыкальный плеер в JavaFX, так что это так. Я хочу щелкнуть в DirectoryChooser в папке «Музыка», а затем добавить каждую подпапку в mp3 –

ответ

1

Если вы просто хотите, чтобы получить файлы в каталоге:

TableView<File> table = new TableView<>(); 
// configure table columns etc 
File dir = ... ; 
table.getItems().addAll(dir.listFiles()); 

Если вы хотите рекурсивно пройти через подкаталоги (на заданную глубину), используйте java.nio API:

TableView<Path> table = new TableView<>(); 
// configure table columns etc 

File fileDir = directoryChooser.showDialog(mainStage); 
if (fileDir != null) { // if the user chose something: 
    Path dir = fileDir.toPath() ; 
    int depth = ... ; // maximum depth to search, use Integer.MAX_VALUE to search everything 
    Files.find(dir, depth, (path, attributes) -> 
     path.getFileName().toString().toLowerCase().endsWith(".mp3")) // select only mp3 files 
     .forEach(table.getItems()::add); 
} 

В последнем (длинном) заявлении Files.find(...) производит (Java 8) Stream<Path>. Код вызывает forEach(...) в этом потоке, чтобы добавить каждый элемент в items в виде таблицы.

+0

Но где я должен назначить переменную файла, в которой хранится выбранная директория? –

+0

Где угодно. Я не уверен, что понимаю этот вопрос. –

+0

Согласно второму, рекурсивный метод. Я не вижу никакой файловой переменной. Извините за глупый вопрос, но этот API для меня совершенно неожиданно. Это как открыть каталог в DirectoryChooser, а затем запустить этот метод Files.find и все? –