import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Stream;

public class PohonProyek {
    public static void main(String[] args) throws IOException {
        Path proyek = Path.of("proyek");

        // Bangun struktur contoh: proyek/{README.md, catatan.txt, src/{main,test}}
        Files.createDirectories(proyek.resolve("src/main"));
        Files.createDirectories(proyek.resolve("src/test"));
        Files.writeString(proyek.resolve("README.md"), "# Proyek contoh\n");
        Files.writeString(proyek.resolve("catatan.txt"), "catatan pengembang\n");
        Files.writeString(proyek.resolve("src/main/Aplikasi.java"), "class Aplikasi {}\n");
        Files.writeString(proyek.resolve("src/main/Util.java"), "class Util {}\n");
        Files.writeString(proyek.resolve("src/test/AplikasiTest.java"), "class AplikasiTest {}\n");

        try (Stream<Path> semua = Files.walk(proyek)) {
            System.out.println("-- walk seluruh kedalaman --");
            semua.sorted().map(Path::toString).forEach(p -> System.out.println("  " + p));
        }

        try (Stream<Path> dangkal = Files.walk(proyek, 1)) {
            System.out.println("-- walk kedalaman 1 --");
            dangkal.sorted().map(Path::toString).forEach(p -> System.out.println("  " + p));
        }

        try (Stream<Path> isi = Files.list(proyek.resolve("src"))) {
            System.out.println("-- list src --");
            isi.sorted().map(p -> p.getFileName().toString())
                    .forEach(p -> System.out.println("  " + p));
        }
    }
}
