Учитывая, что у вас уже есть код для отображения метаданных для одного файла, его тривиально изменить для поддержки нескольких файлов.
Все, что вам нужно, это isDirectory()
и listFiles()
методы File
(или, если вы используете Java 8+, вы можете использовать метод Files.list(Path)
для отложенной итерации *).
Если ваш входной файл является каталогом, перечислите каждый файл и введите:
public class Metadata {
public static void main(String[] args) {
Metadata meta = new Metadata();
File file = new File(args[0]);
if (file.exists()) {
System.out.println("Can find " + file);
meta.readAndDisplayMetadata(file);
}
else {
System.out.println("cannot find file: " + file);
}
}
void readAndDisplayMetadata(File file) {
// If you *don't* want recursive behavior,
// move this block "outside" or to a separate method
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
readAndDisplayMetadata(f);
}
}
// Rest of method as is...
}
}
*) Ниже лучше, если вы можете использовать его, как указано выше может не хватает памяти, если в каталоге много файлов.
void readAndDisplayMetadata(File file) throws IOException {
Path path = file.toPath();
if (Files.isDirectory(path /* optional, handle symbolic links */)) {
Files.list(path)
.forEach(p -> readAndDisplayMetadata(p.toFile()));
}
// Rest of method as is...
}