Java перенос строки в файле
Допустим вот такое
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, протоколах Интернет.
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"
Konigsberg
FileWriter outputWriter = new FileWriter(iniFile, true);не так как надо сохраняет
Вы не могли бы мне маленький примерчик нацарапать каторый сохраняет в выброную строчку и при вызове второй раз не переписывает весь файл а дописывает в новую строку?
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
Ваш подход изначально неверен - вы пытаетесь работать на прямую с файлом, вместо того, чтобы сделать модель и написать всего два универсальных метода - запись модели в файл и чтение модели из файла. Работать с моделью будет удобнее, чем с файлом
Читайте также: