我正在尝试查找目录中每个文件夹中的所有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();
答案 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);