import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;

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

        System.out.println("exists        : " + Files.exists(artikel));
        System.out.println("size          : " + Files.size(artikel) + " byte");

        String isi = Files.readString(artikel, StandardCharsets.UTF_8);
        System.out.println("readString    : " + isi.lines().count() + " baris");
        System.out.println("kata pertama  : " + isi.split(" ")[0]);

        Path salinan = Path.of("salinan.txt");
        Files.copy(artikel, salinan, StandardCopyOption.REPLACE_EXISTING);
        System.out.println("copy          : ukuran sama = "
                + (Files.size(salinan) == Files.size(artikel)));

        Path arsip = Path.of("arsip.txt");
        Files.move(salinan, arsip, StandardCopyOption.REPLACE_EXISTING);
        System.out.println("move          : salinan ada = " + Files.exists(salinan)
                + ", arsip ada = " + Files.exists(arsip));

        long jumlahBaris;
        try (var stream = Files.lines(arsip, StandardCharsets.UTF_8)) {
            jumlahBaris = stream.count();
        }
        System.out.println("lines         : " + jumlahBaris + " baris");

        Path target = Path.of("catatan", "2026", "ringkasan.txt");
        Files.createDirectories(target.getParent());
        Files.writeString(target, "Diproses oleh Files.\n", StandardCharsets.UTF_8);
        try (BufferedReader pembaca = Files.newBufferedReader(target, StandardCharsets.UTF_8)) {
            System.out.println("newBufferedReader: " + pembaca.readLine());
        }

        System.out.println("delete        : " + Files.deleteIfExists(arsip));
        System.out.println("arsip ada     : " + Files.exists(arsip));
    }
}
