Java: запись данных с консоли в файл

248
07 декабря 2017, 00:24

При записи данных с консоли в файл сбивается кодировка

     package com.mycompany.praktika;
import static j2html.TagCreator.*;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class MainClass {
static Scanner sc = null;
static String name = null, region = null, first = null, second = null, name2 = null, three=null,
            firstname=null, secondname=null, threename=null, add=null,add2=null;
static String  ipn, scor, ipn2, scor2, prise, ipn3;
public static void main(String[] args) throws IOException{
    sc =new Scanner(new InputStreamReader(System.in));
             System.out.println("---ОДЕРЖУВАЧ---");
             first = ("---ОДЕРЖУВАЧ---");
             System.out.println("Найменування: ");
             name = "Найменування: " + sc.next();
             System.out.println("Регіон оплати: ");
             region = "Регіон оплати: " + sc.next();
             System.out.println("ІПН: ");
             ipn = "ІПН: " + ifNotNumber(sc.next());
             System.out.println("Номер рахунку: ");
             scor = "Номер рахунку: " + ifNotNumber(sc.next());
             System.out.println("---БАНК ОТРИМУВАЧА---");
             second = "---БАНК ОТРИМУВАЧА---";
             System.out.println("Найменування: ");
             name2 = "Найменування: " + sc.next();
             System.out.println("ІПН: ");
             ipn2 = "ІПН: " + ifNotNumber(sc.next());
             System.out.println("Номер рахунку: ");
             scor2 = "Номер рахунку: " + ifNotNumber(sc.next());
             System.out.println("Зняти з рахунку: ");
             prise = "Зняти з раххунку: " + ifNotNumber(sc.next());
             System.out.println("---ДЕТАЛІ ПЛАТЕЖУ---");
             three = "---ДЕТАЛІ ПЛАТЕЖУ---";
             System.out.println("ІПН організіції/отримача: ");
             ipn3 = "ІПН організіції/отримача: " + ifNotNumber(sc.next());
             System.out.println("Ім'я: ");
             firstname = "Ім'я: " + sc.next();
             System.out.println("Фамілія: ");
             secondname = "Фамілія: " + sc.next();
             System.out.println("По-батькові: ");
             threename = "По-батькові:" + sc.next();
             System.out.println("Адреса платника: ");
             add = "Адреса платника: " + sc.next();
             System.out.println("Телефон платника: ");
             add2 = "Телефон платника: " + sc.next();
             String fina = first + "\n" + name +"\n" +region + "\n"+ ipn+ "\n"+ scor +"\n"
             + second + "\n" + name2 + "\n"+ipn2 + "\n" + scor2 + "\n" + prise + "\n" + three
                     + "\n" + ipn3 + "\n" +firstname + "\n" + secondname+"\n" + threename + "\n"
                      + add + "\n" + add2;
              createDocx(html(
head(
    meta().withCharset("UTF-8"),
    title("Чек")
),
body(
        style("display: table-row-group;"),
        h5(first).attr("style = \" display: table-row-group; \" ;"),
        h5(name).attr("style =  \" display: table-row-group; \" ;"),
        h5(region).attr("style = \" display: table-row-group; \" ;"),
        h5(ipn).attr("style = \" display: table-row-group; \" ;"),
        h5(scor).attr("style = \" display: table-row-group; \" ;"),
        h5(second).attr("style = \" display: table-row-group; \" ;"),
        h5(name2).attr("style = \" display: table-row-group; \" ;"),
        h5(ipn2).attr("style = \" display: table-row-group; \" ;"),
        h5(scor2).attr("style = \" display: table-row-group; \" ;"),
        h5(prise).attr("style = \" display: table-row-group; \" ;"),
        h5(three).attr("style = \" display: table-row-group; \" ;"),
        h5(ipn3).attr("style = \" display: table-row-group; \" ;"),
        h5(firstname).attr("style = \" display: table-row-group; \" ;"),
        h5(secondname).attr("style = \" display: table-row-group; \" ;"),
        h5(threename).attr("style = \" display: table-row-group; \" ;"),
        h5(add).attr("style = \" display: table-row-group; \" ;"),
        h5(add2).attr("style = \" display: table-row-group; \" ;")
    )
).render());        
}

static String ifNotNumber(String number){
    try{
        if (Double.parseDouble(number) >= 0) {}
    }catch(Exception e){
        System.out.println("Введені не вірні данні: введіть знову");
        ifNotNumber(sc.next());
        return number;
    }
    return number;
}
 public static void createDocx(String fina) throws IOException{
   // HtmlCreator ht = new HtmlCreator();
    //FileOutputStream fs = new FileOutputStream("Chek.html", StandardCharsets.UTF_8);
    OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("Chek.html"), StandardCharsets.UTF_8);
           // OutputStreamWriter writer = new OutputStreamWriter(fs, StandardCharsets.UTF_8);
            writer.write(fina);
            writer.close();
   }   

}

Answer 1
public String getInput() {
    try {
        BufferedReader reader = new BufferedReader( new InputStreamReader (System.in));
        String path = reader.readLine();
        return path;
    } catch (IOException ex) {
        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    }
    return null;
}

Как использовать: String input = getInput();

Чтобы записать что то в файл можешь использовать эту функцию.

public void writeToFile(String pathToFile, String text) {
        try{
            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(pathToFile),"Cp1251"));
            out.write(text);
            out.newLine();
            out.close();
        } catch (IOException e){
            System.out.println(e.getMessage());
        }
    }  

Первый аргумент - путь к файлу, в который нужно что то записать.

Второй аргумент - сам текст который нужно записать.

READ ALSO
Java. Замена по регулярному выражению

Java. Замена по регулярному выражению

Есть несколько паттернов, которые я объединяю через join("|")

321
Алгоритм формирования списка

Алгоритм формирования списка

мне нужно придумать алгоритм, который будет формировать плейлист из треков длительностью 1 частреки находятся в 2 разных папках

215
Как моментально отследить кнопку Power на android?

Как моментально отследить кнопку Power на android?

Добрый день, как можно моментально отследить кнопку Power? В этом примере кода она срабатывает только после того, как пройдет некоторое время...

213
Удалить все вхождения с помощью StringBuffer

Удалить все вхождения с помощью StringBuffer

Есть массив слов и в каждом слове от 2 до 10 строчных латинских буквС помощью StringBuffer удалить все вхождения "th"

246