// 17_Files.java - עבודה עם קבצים

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

public class FilesExample {
    public static void main(String[] args) {
        Path output = Path.of("sample.txt");
        Path lines = Path.of("lines.txt");

        try {
            // כתיבה מהירה של מחרוזת לקובץ
            Files.writeString(output, "שלום עולם\nזו שורה שנייה\nזו שורה שלישית\n");
            System.out.println("הקובץ נכתב: " + output.toAbsolutePath());

            // קריאה מהירה כמחרוזת
            String content = Files.readString(output);
            System.out.println("\n--- התוכן ---");
            System.out.println(content);

            // קריאה כרשימת שורות
            List<String> allLines = Files.readAllLines(output);
            System.out.println("מספר שורות: " + allLines.size());
            for (int i = 0; i < allLines.size(); i++) {
                System.out.println((i + 1) + ": " + allLines.get(i));
            }

            // כתיבה של רשימת שורות
            List<String> data = List.of(
                "שורה 1",
                "שורה 2",
                "שורה 3",
                "שורה 4"
            );
            Files.write(lines, data);
            System.out.println("\nנכתב lines.txt");

            // בדיקת קיום הקובץ
            System.out.println("הקובץ קיים? " + Files.exists(lines));
            System.out.println("גודל הקובץ: " + Files.size(lines) + " בייטים");

            // כתיבה עם PrintWriter
            try (PrintWriter writer = new PrintWriter("structured.txt")) {
                writer.println("כותרת הקובץ");
                writer.println("-----------");
                writer.printf("שם: %s%n", "נפתלי");
                writer.printf("גיל: %d%n", 30);
                writer.printf("PI = %.4f%n", Math.PI);
            }
            System.out.println("\nנכתב structured.txt");

            // קריאה עם BufferedReader - ליעילות
            try (BufferedReader br = new BufferedReader(new FileReader("structured.txt"))) {
                String line;
                System.out.println("\n--- structured.txt ---");
                while ((line = br.readLine()) != null) {
                    System.out.println(line);
                }
            }

            // ניקוי - מחיקת הקבצים שיצרנו
            Files.deleteIfExists(output);
            Files.deleteIfExists(lines);
            Files.deleteIfExists(Path.of("structured.txt"));
            System.out.println("\nהקבצים נמחקו");

        } catch (IOException e) {
            System.err.println("שגיאת קריאה/כתיבה: " + e.getMessage());
        }
    }
}
