Подтвердить что ты не робот

Как написать новый символ строки в файл в Java

У меня есть строка, содержащая новые строки. Я отправляю эту строку функции для записи строки в текстовый файл следующим образом:

    public static void writeResult(String writeFileName, String text)
    {
        try
        {
        FileWriter fileWriter = new FileWriter(writeFileName);
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

        bufferedWriter.write(text);

        // Always close files.
        bufferedWriter.close();

        }
        catch(IOException ex) {
            System.out.println("Error writing to file '"+ writeFileName + "'");}
    } //end writeResult function

Но когда я открываю файл, я нахожу его без каких-либо новых строк. Когда я показываю текст на экране консоли, он отображается с новыми строками. Как написать новый символ строки в текстовом файле.

EDIT: Предположим, что это аргумент text, который я отправил в вышеприведенную функцию:

I returned from the city about three o'clock on that
may afternoon pretty well disgusted with life.
I had been three months in the old country, and was

Как написать эту строку как есть (с новыми строками) в текстовом файле. Моя функция записывает строку в одну строку. Можете ли вы предоставить мне способ записать текст в файл, включая новые строки?

ИЗМЕНИТЬ 2: Текст изначально находится в TXT файле. Я прочитал текст, используя:

while((line = bufferedReader.readLine()) != null)
{
sb.append(line); //append the lines to the string
sb.append('\n'); //append new line
} //end while

где sb - StringBuffer

4b9b3361

Ответ 1

В ИЗМЕНИТЬ 2:

while((line = bufferedReader.readLine()) != null)
{
  sb.append(line); //append the lines to the string
  sb.append('\n'); //append new line
} //end while

вы читаете текстовый файл и добавляете к нему новую строку. Не добавляйте новую строку, которая не будет показывать новую строку в некоторых простых редакторах Windows, таких как "Блокнот". Вместо этого добавьте строку разделителя строки для ОС, используя:

sb.append(System.lineSeparator()); (для Java 1.7 и 1.8) или sb.append(System.getProperty("line.separator")); (Java 1.6 и ниже)

В качестве альтернативы, позже вы можете использовать String.replaceAll() для замены "\n" в строке, построенной в StringBuffer, с символом новой строки для ОС:

String updatedText = text.replaceAll("\n", System.lineSeparator())

но было бы более удобно добавлять его при создании строки, чем добавить '\n' и заменить ее позже.

Наконец, как разработчик, если вы используете блокнот для просмотра или редактирования файлов, вам следует отказаться от него, поскольку есть гораздо более способные инструменты, такие как Notepad ++ или вашей любимой Java IDE.

Ответ 2

Класс BufferedWriter предлагает метод newLine(). Использование этого гарантирует независимость платформы.

Ответ 3

ПРОСТОЕ РЕШЕНИЕ

File file = new File("F:/ABC.TXT");
FileWriter fileWriter = new FileWriter(file,true);
filewriter.write("\r\n");

Ответ 4

bufferedWriter.write(text + "\n"); Этот метод может работать, но новый символ линии может быть разным между платформами, поэтому альтернативно вы можете использовать этот метод:

bufferedWriter.write(text);
bufferedWriter.newline();

Ответ 5

Разделите строку в строковый массив и напишите, используя метод выше (я предполагаю, что ваш текст содержит \n для получения новой строки)

String[] test = test.split("\n");

и внутри цикла

bufferedWriter.write(test[i]);
bufferedWriter.newline();

Ответ 6

Поместите этот код везде, где вы хотите вставить новую строку:

bufferedWriter.newLine();

Ответ 7

Вот фрагмент, который получает символ новой строки по умолчанию для текущей платформы. использование   System.getProperty("os.name") и   System.getProperty("os.version"). Пример:

public static String getSystemNewline(){
    String eol = null;
    String os = System.getProperty("os.name").toLowerCase();
    if(os.contains("mac"){
        int v = Integer.parseInt(System.getProperty("os.version"));
        eol = (v <= 9 ? "\r" : "\n");
    }
    if(os.contains("nix"))
        eol = "\n";
    if(os.contains("win"))
        eol = "\r\n";

    return eol;
}

Где eol - это символ новой строки