Работа с методом 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 можно получить нужные данные о содержимом директории.

Источник