Настройка вывода данных массива

Есть код который выводит все папки нужного размера из выбранной директории. Код работает и выводит построчно названия соответ.условию файлов, но мне нужно, что бы помимо названия файла, выводился его размер и через пробел путь к этому файлу,
Т.е. сейчас выводиться например: name.txt , а необходимо: 500kb /Users/Desktop/name.txt

Я понимаю, что в моем случае размер файла находим методом file.length(), но куда его вставить не пойму.

import java.io.File;
import java.util.stream.Stream;

public class Main {
    public static final int MIN_LENGTH = 150;  //размер файла в байтах

    public static void main(String[] args) {
        File directory = new File("C:\\Users\\Desktop\\");  // путь к нужной директории
        
        if (directory.isDirectory()) {
            String[] fileList = directory.list((dir, name ) -> {
                File file = (new File(dir + "\\" + name ));
                return file.isFile() && file.length() >= MIN_LENGTH ;
            });
            if (fileList != null) {
                Stream.of(fileList).forEach(System.out::println);   // вывод в консоль построчно, а не в массиве
            }
        }
    }
}

Ответы (1 шт):

Автор решения: gil9red

Отдельно объявил фильтр и сделал перебор по File, а результаты вывел в цикле

Пример:

File directory = new File("C:\\Users\\excit\\Desktop\\dpo_java_basics-master(2)");  // путь к нужной директории

if (directory.isDirectory()) {
    java.io.FileFilter filterBySize = file -> file.isFile() && file.length() >= MIN_LENGTH;
    File[] files = directory.listFiles(filterBySize);
    if (files != null) {
        for (File file : files) {
            System.out.printf("%s KB / %s%n", file.length() / 1024, file);
        }
    }
}

Цикл можно заменить на streams+лямбду:

            Stream.of(files).forEach(file -> 
                    System.out.printf("%s KB / %s\n", file.length() / 1024, file)
            );
→ Ссылка