如何查找目录中的所有wav? JavaFX的

时间:2017-09-23 22:15:39

标签: file javafx filter

我正在尝试查找目录中每个文件夹中的所有wav,例如“Music”。现在,我的代码显示了在我选择的任何文件夹中找到的wavs,但我希望它能够一次列出整个目录中找到的所有wav,而无需用户从一个文件夹到另一个文件夹。我怎样才能做到这一点?这是我的代码:

FileChooser chooseFile = new FileChooser();
FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("Choose a file (*.wav)", "*.wav");
    chooseFile.getExtensionFilters().add(filter);
    File file = chooseFile.showOpenDialog(null);
    directory = file.toURI().toString();

1 个答案:

答案 0 :(得分:0)

首先,您应该使用DirectoryChooser来选择目录。您可以使用NIO包来查找文件:

DirectoryChooser chooser = new DirectoryChooser();
File directory = chooser.showDialog(null);
Path[] wavs = findWavs(directory);
private static Path[] findWavs(File directory) throws IOException {
    Path dir = directory.toPath();
    try (Stream<Path> stream = Files.find(dir, Integer.MAX_VALUE, (path, attributes) -> path.getFileName().toString().endsWith(".wav"))) {
        return stream.toArray(Path[]::new);
    }
}

如果您需要File,则只需将路径映射到文件:

        return stream.map(Path::toFile).toArray(File[]::new);