public Writer(String fileName) throws UnsupportedCharsetException {
        if (System.getProperty("file.encoding").equalsIgnoreCase("UTF-8") == false) {
            String explainString // Chack whether the encoding property is correct
                    = "\n\tThe system property: \"file.encoding\" should set to \"UTF-8\"."
                    + "\n\tSet it, and run the program again."
                    + "\n\tYou can set the \"file.encoding\" property by passing -Dfile.encoding=UTF-8 as argument to the JVM.\n";
            throw new UnsupportedCharsetException(explainString);
        }

        try {
            this.file = new File(fileName);

            if (this.file.exists() == false) {//if file doesnt exists, then create it
                this.file.createNewFile();
            }

            this.fileOutputStream = new FileOutputStream(this.file);
            this.outputStreamWriter = new OutputStreamWriter(this.fileOutputStream, Charset.forName("UTF8"));
            this.bufferWriter = new BufferedWriter(this.outputStreamWriter);

            //<editor-fold defaultstate="collapsed" desc="would you like to test?">
//            this.write("<!DOCTYPE html>\n"
//                    + "<html>\n"
//                    + "    <head>\n"
//                    + "       <title>פלט לבדיקה</title>\n"
//                    + "       <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n"
//                    + "       <META HTTP-EQUIV=\"CACHE-CONTROL\" CONTENT=\"NO-CACHE\">\n"
//                    + "       <link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\">\n"
//                    + "    </head>\n"
//                    + "    <body>\n");
            //</editor-fold>
        } catch (IOException ex) {
            System.out.println(ex);
            for (StackTraceElement el : ex.getStackTrace()) {
                System.out.println(el);
            }
        }
    }