// FileEncoding.java
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.Charset;

/**
 * FileEncoding zeigt den Umgang mit Character-Streams und CharSets.
 * Beispielprogramm zur Programmiertechnik 1, Teil 6.
 * @author H.Drachenfels
* @version 25.6.2024
 */
public final class FileEncoding {
    private FileEncoding() { }

    /**
     * main schreibt die Zeichen äöüß&euro;&frac12;&sup2;&radic;&sum;
     * in eine Datei.
     * @param args leer oder Name eines character sets
     * @throws IOException bei Ausgabefehlern
     */
    public static void main(String[] args) throws IOException {
        String charsetName = Charset.defaultCharset().name();
        if (args.length > 0) {
            charsetName = args[0];
        } else {
            System.out.printf("Using charset \"%s\" out of:%n", charsetName);
            for (Charset cs : Charset.availableCharsets().values()) {
                System.out.println(cs.name());
                for (String s : cs.aliases()) {
                    System.out.printf("    %s%n", s);
                }
            }
        }

        String umlaute = "äöüß";
        String euro = "\u20AC";
        String symbole = "\u00BD\u00B2\u221A\u2211";

        String fileName = "charset-" + charsetName + ".txt";

        PrintWriter pw = new PrintWriter(fileName, charsetName);
        pw.println(umlaute + euro + symbole);
        pw.close();
    }
}

