Проблема с кодировкой при записи в файл Java

312
25 августа 2017, 23:14

Код для добавления написанной строки после определенной строки. Раньше проблема была и при чтении из файла, но поменяла в настройках кодировку на windows-1251, после чего буквы из файла idea начала понимать, а вот строку которую надо записать русскими буквами не понимает. Что делать? может есть какой то код который можно написать вначале программы, чтобы она меняла кодировку или еще что то в настройках? Подскажите пожалуйста.

    package Main;
    import java.io.*;
...
    public class WorkWithFile {
        private String path;
        public WorkWithFile(String path) {
            this.path = path;
        }
        //возвращает массив номер строк сверху (первая строка - 1) str (после которых надо вставить)
        private ArrayList<Integer> countNumberPosStr(String str) throws IOException {
            File file = new File(path);
            BufferedReader bf = new BufferedReader(new FileReader(file.getAbsoluteFile()));
.....
        }
        //создает список со всеми строками файла
        private LinkedList<String> writeArrayOfAllStrings() throws IOException {
.....
}
        //создается новый файл, с добавленными строками
        public void addStringInNewFile(String str, String str_add) throws IOException {
            File new_file = new File("D:/other/Text/File.txt");
            boolean create = new_file.createNewFile();
            boolean flag = false;
            if (create) {
                FileWriter file = new FileWriter("D:/other/Text/File.txt");
                int count = 1;
                int count_array = 0;
                ArrayList<Integer> quantity_strings = this.countNumberPosStr(str);
                LinkedList<String> strings = this.writeArrayOfAllStrings();
                ListIterator<String> it = strings.listIterator();
                for (String p :
                        strings) {
                    file.write(it.next() + "\n");
                    if (count_array < quantity_strings.size()) {
                        if (count == quantity_strings.get(count_array)) {
                            file.write(str_add + "\n");
                            count_array++;
                            flag = true;
                        }
                    }
                    count++;
                }
                if (flag) {
                    file.flush();
                }
            } else {
                System.out.println("ошибка при создании файла");
            }
        }
    }

----и вот в главной программе при вызове не понимает строку вторую

public class ChangeText {
    private static WorkWithFile work;
    public static void main(String[] args) throws IOException {
        work = new WorkWithFile("D:/other/Text/for2.txt");
        work.addStringInNewFile("123 45", "это жея(");
    }
}
Answer 1

Спустя три дня откопала решение:

  PrintWriter file = new PrintWriter("D:/other/Text/File.txt", "Cp1251");
...
  file.println(str_add);

Правда в настройках idea сделала обратно UTF-8, а не windows

READ ALSO
Как написать? Где взять литературу по данному вопросу или где можно изучить материал

Как написать? Где взять литературу по данному вопросу или где можно изучить материал

Я хочу написать клиент-серверное приложение на Java - начать с простенького чатаПока что мне подходит и сервер на компьютере дома

208
Помогите доделать горизонтальное меню

Помогите доделать горизонтальное меню

Нужно убрать точку перед первым элементом, и убрать отступ у последнего элементаВозможно есть проще решение сделать такое горизонтальное...

206
Помогите реализовать section

Помогите реализовать section

Помогите решить проблему: не понимаю, как реализовать секцию на сайте, без Bootstrap

226