Работа с методом Files.list в Java
Доброго времени суток! В данном примере мы рассмотрим с Вами как можно получить листинг директории в Java
средствами метода Files.list.
Метод Files.list возвращает поток (Stream) элементов каталога. Пример кода ниже:
FilesListMain.java — чтение файлов из текущей директории
package com.myrusakov;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FilesListMain
{
public static void main(String[] args)
{
try
{
// читаем список файлов из текущей папки - .
Files.list(Paths.get(".")).forEach(path -> System.out.println(path));
}
catch(IOException e)
{
System.out.println(e.getMessage());
}
}
}
Чтение только директорий
package com.myrusakov;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FilesListMain
{
public static void main(String[] args)
{
try
{
var homeDirectory = System.getProperty("user.home");
Files
.list(new File(homeDirectory).toPath()) // читаем из домашней папки пользователя
.filter(path -> path.toFile().isDirectory()) // только директории
.forEach(System.out::println); // выводим на печать
}
catch(IOException e)
{
System.out.println(e.getMessage());
}
}
}
С помощью метода toFile мы преобразуем объект Path в файл и вызываем метод isDirectory — таким образом мы оставляем только папки.
Фильтрация содержимого папки по расширениям
package com.myrusakov;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FilesListMain
{
public static void main(String[] args)
{
try
{
String[] pathParts = new String[] { System.getProperty("user.home"), "MyDocuments", "Downloads" };
var homeDirectory = String.join(System.getProperty("file.separator"), pathParts);
var extension = ".docx";
Files
.list(Paths.get(homeDirectory))
.filter(path -> path.toString().endsWith(extension))
.forEach(System.out::println);
}
catch(IOException e)
{
System.out.println(e.getMessage());
}
}
}
Подсчет количества файлов в папке с помощью Files.list
package com.myrusakov;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FilesListMain
{
public static void main(String[] args)
{
try
{
String[] pathParts = new String[] { System.getProperty("user.home"), "MyDocuments", "Downloads" };
var homeDirectory = String.join(System.getProperty("file.separator"), pathParts);
var extension = ".docx";
var countOfFiles = Files
.list(Paths.get(homeDirectory))
.filter(path -> path.toString()
.endsWith(extension)).count();
System.out.printf("В папке %s содержится %d Word файлов", homeDirectory, countOfFiles);
}
catch(IOException e)
{
System.out.println(e.getMessage());
}
}
}
Таким образом, с помощью метода Files.list в Java можно получить нужные данные о содержимом директории.