/*
  Copyright (c) January 2022 by Paweł Rzechonek
  Kopiowanie konsoli (klawiatura) do pliku.
  Nazwa pliku przekazana przez argumenty wywołania programu.
*/

import java.io.*;

public class KonsolaDoPliku {
    public static void main(String[] args) {
        if (args.length < 1 || args.length > 2) {
            System.err.println("wywołanie programu:");
            System.err.println("> java KonsolaDoPliku plik_tekstowy [kodowanie]");
            System.exit(1);
        }
	    File plik = new File(args[0]);
        if (plik.exists()) {
            System.err.println(String.format("plik %s już istnieje", plik.getName()));
            System.exit(2);
        }
        String kodowanie = args.length < 2 ? "utf8" : args[1];
        try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                FileOutputStream fos = new FileOutputStream(plik);
                PrintWriter pw = new PrintWriter(new OutputStreamWriter(fos, kodowanie))) {
            System.err.println("==== początek kopiowania konsoli do pliku ====");
            System.err.println("==== zakończenie: Ctrl-C (konsola Windows), Ctrl-D (środowisko zintegrowane IntelliJ IDEA) ====");
            for (String ln = br.readLine(); ln != null; ln = br.readLine())
                pw.println(ln);
            System.err.println("==== koniec ====");
        }
        catch (IOException ex) {
            System.err.println(String.format("błąd wykonania: %s", ex.getMessage()));
            ex.printStackTrace();
            System.exit(3);
        }
    }
}
