/*
  Copyright (c) January 2022 by Paweł Rzechonek
  Kopiowanie pliku na konsolę (ekran).
  Nazwa pliku przekazana przez argumenty wywołania programu.
*/

import java.io.*;

public class PlikNaKonsole {
    public static void main(String[] args) {
        if (args.length < 1 || args.length > 2) {
            System.err.println("wywołanie programu:");
            System.err.println("> java PlikNaKonsole plik_tekstowy [kodowanie]");
            System.exit(1);
        }
        File plik = new File(args[0]);
        if (! plik.exists()) {
            System.err.println(String.format("plik %s nie istnieje", plik.getName()));
            System.exit(2);
        }
        String kodowanie = args.length < 2 ? "utf8" : args[1];
        try (BufferedReader we = new BufferedReader(new InputStreamReader(System.in));
             FileInputStream fis = new FileInputStream(plik);
             BufferedReader br = new BufferedReader(new InputStreamReader(fis, kodowanie))) {
            System.err.println("==== rozpoczęcie kopiowania pliku na konsolę ====");
            System.err.print("==== po wciśnięciu klawisza Enter ====");
            we.readLine();
            for (String ln = br.readLine(); ln != null; ln = br.readLine())
                System.out.println(ln);
        }
        catch (Exception ex) {
            System.err.println(String.format("błąd wykonania: %s", ex.getMessage()));
            ex.printStackTrace();
            System.exit(3);
        }
    }
}
