Java перенос строки в файле

Обновлено: 04.07.2024

Допустим вот такое
System.out.print("ABCDEFG\r1234");
выдаст
1234EFG
т. е. возврат каретки на исходную позицию в этой же строке.

А вот такое
System.out.print("ABCDEFG\n1234");
выдаст
ABCDEFG
1234
т. е. переход на новую строку.

а ваш пример
System.out.print("хз \r хз");
должен выбать
хз
(именно с пробелом перед "хэ"
и именно один раз.

Возврат каретки (англ. carriage return, CR) — управляющий символ ASCII (0x0D, 13 в десятичной системе счисления, '\r'), при выводе которого курсор перемещается к левому краю поля, не переходя на другую строку. Этот управляющий символ вводится клавишей «Enter». Будучи записан в файле, в отдельности рассматривается как перевод строки только в системах Macintosh.
Подача строки (от англ. line feed, LF — «подача [бумаги] на строку» ) — управляющий символ ASCII (0x0A, 10 в десятичной системе счисления, '\n'), при выводе которого курсор перемещается на следующую строку. В случае принтера это означает сдвиг бумаги вверх, в случае дисплея — сдвиг курсора вниз, если ещё осталось место, и прокрутку текста вверх, если курсор находился на нижней строке. Возвращается ли при этом курсор к левому краю или нет, зависит от реализации.

LF (ASCII 0x0A) используется в Multics, UNIX, UNIX-подобных операционных системах (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD и др.) , BeOS, Amiga UNIX, RISC OS и других;

CR+LF (ASCII 0x0D 0x0A) используется в DEC RT-11 и большинстве других ранних не-UNIX- и не-IBM-систем, а также в CP/M, MP/M (англ.) , MS-DOS, OS/2, Microsoft Windows, Symbian OS, протоколах Интернет.


Александр привел несоответствующий действительности пример, т. к. при написании System.out.print("ABCDEFG\r1234"); выведет не 1234EFG, а
ABCDEFG
1234
Java покажет похожие результаты и дело, на самом деле, не в ней, а в платформе, которую вы используете!
\n для unix
\r для mac
\r\n для Windows

[Turn] возврат каретки и перевод строки в Java / n / r / t

«\ r» - это возврат каретки, а «\ n» - перевод строки, первый перемещает курсор в начало строки, а второй перемещает курсор на одну позицию вниз. Обычно используемый Enter - два сложения. Переверните статью ниже.

Возврат каретки и перевод строки
Сегодня я наконец выяснил происхождение и разницу между понятиями «возврат каретки» и «перевод строки».
До появления компьютеров существовало нечто под названием Teletype Model 33, которое могло набирать 10 символов в секунду. Однако у него есть проблема: для завершения строки и перевода строки требуется 0,2 секунды, и он может точно ввести два символа. Если новый персонаж появляется в течение 0,2 секунд, этот персонаж будет потерян.

Итак, разработчики подумали, как решить эту проблему, добавив два символа для обозначения конца после каждой строки. Один из них называется «возврат каретки» и указывает печатной машинке расположить печатающую головку на левой границе, другой - «перевод строки» и указывает печатной машинке перемещать бумагу на одну строку вниз.

Это происхождение «перевода строки» и «возврата каретки», как видно из их английских названий.

Позже был изобретен компьютер, и эти два понятия, как правило, были применены к компьютеру. В то время память была дорогой, и некоторые ученые считали, что добавление двух символов в конце каждой строки было слишком расточительным, а добавления одного было достаточно. В результате возникли различия.

В системах Unix конец каждой строки - только «<newline>», то есть «\ n»; в системе Windows конец каждой строки - «<newline> <возврат каретки», то есть «\ r \ n»; в системе Mac Каждая строка заканчивается «<Enter>». Прямым следствием этого является то, что если файл в системе Unix / Mac открывается в Windows, весь текст становится одной строкой, а если файл в Windows открывается в Unix / Mac, в конце каждой строки может быть дополнительный ^ M условное обозначение.

Вот мое собственное резюме.

/ t эквивалентна клавише Tab на клавиатуре, / n перевод строки Новая строка, / r возврат каретки Возврат каретки, основная концепция должна заключаться в том, что ввод означает возврат на передний план, а перевод новой строки означает изменение строки.

Работа символа новой строки различается в зависимости от операционной системы:

Форматирование строк и генерация текстового вывода часто возникают во время программирования. Во многих случаях возникает необходимость добавить новую строку в строку для форматирования выходных данных.

Давайте обсудим, как использовать символы новой строки.

Дальнейшее чтение:

Проверка наличия пустых или пустых строк в Java

Проверьте, содержит ли строка Подстроку

2. Добавление символов новой строки в строку

2.1. Использование разрывов строк CRLF

В этом примере мы хотим создать абзац, используя две строки текста. В частности, мы хотим, чтобы line2 появился в новой строке после line1 .

Мы продемонстрировали три метода добавления новой строки, но, к сожалению, они зависят от платформы.

2.2. Использование Независимых От Платформы Линейных Разделителей

Мы можем использовать системные константы, когда хотим, чтобы наш код был независимым от платформы.

Например, с помощью Система.Линейный разделитель() для предоставления разделителя строк:

2.3. Использование Независимых От Платформы Символов Новой Строки

Хотя разделители строк обеспечивают независимость от платформы, они заставляют нас объединять ваши строки.

Если мы используем что-то вроде System.out.printf или String.format , то независимый от платформы символ новой строки %n может использоваться непосредственно в строке :

Это то же самое, что включить System.LineSeparator() в нашу строку, но нам не нужно разделять строку на несколько частей.

3. Добавление символов новой строки на HTML-страницу

В целом, это три метода разрыва строки в HTML. Мы можем решить, какой из них использовать, в зависимости от используемого нами HTML-тега.

3.1. Тег разрыва HTML

Мы можем использовать тег HTML break для разрыва строки:

Тег для разрыва строки работает почти во всех HTML-элементах, таких как , , , и т. Д. Однако обратите внимание, что он не работает в теге .

3.2. Символ новой строки

3.3. Символы Юникода

Для тега будут работать обе строки ниже:

4. Разница между \n и \r

В Windows для начала новой строки используется последовательность из двух символов, за которой сразу же следует LF. И наоборот, в Unix-подобных системах используется только LF.

При написании Java-приложений мы должны обращать внимание на символы разрыва строки, которые мы используем, потому что приложения будут вести себя по-разному в зависимости от операционной системы, в которой они будут работать.

Самый безопасный и наиболее совместимый вариант-использовать System.LineSeparator(). Таким образом, нам не придется принимать во внимание операционную систему.

5. Заключение

В этой статье мы обсудили, как добавить символы новой строки в строку в Java.

Наконец, мы закончили с тем, как добавить новую строку в случае, если мы создаем HTML-страницу.



Я хочу сохранить в Стоку "0" значит сохранилась в "0"
затем в строку "1" сохрнилось в "1"
в строку "100" значит в "100"

AlekseJ_AlekseJ, целиком код в студию



Konigsberg

FileWriter outputWriter = new FileWriter(iniFile, true);



RandomAccessFile raf = new RandomAccessFile(iniFile,"rws");

не так как надо сохраняет

Вы не могли бы мне маленький примерчик нацарапать каторый сохраняет в выброную строчку и при вызове второй раз не переписывает весь файл а дописывает в новую строку?

RandomAccessFile raf = new RandomAccessFile("test.txt", "rws"); raf.seek(raf.length()); //Перенесте указатель на конец файла raf.writeUTF("Ткст"); //Добавить текст после указателя, т.е. в конец



Konigsberg

Спасибо за код, но только файл после трёх запусков выглядит вот так:

Текст Текст Текст

а хотелось бы вот так:

BufferedWriter writer = new BufferedWriter(new FileWriter("test.txt", true));



А есть какая нибудь возможность теперь между

ещё один вставить

Текст
Текст
Текст

Зачем? Обычно так не делается, любая программа, которая "вставляет" текст - дефакто перезаписывает файл поностью новым содерржимым, не зачем логику "вставки" переносить на уровеь работы с файлами



[Клиент]
Имя = Саня
Фамилия = Сидоров

Я же говорю - сначала считываете файл, формируете программную модель, изменяете её, а потом перезаписываете весь файл измененной моделью

Добавлено 10.03.09, 21:42
Ваш подход изначально неверен - вы пытаетесь работать на прямую с файлом, вместо того, чтобы сделать модель и написать всего два универсальных метода - запись модели в файл и чтение модели из файла. Работать с моделью будет удобнее, чем с файлом

Читайте также: