Удаление переносов строк из файла в Java: кроссплатформенно

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Сжатое выражение, позволяющее убрать переводы строк из файла в Java:

Java
Скопировать код
Files.writeString(Paths.get("yourfile.txt"), Files.readString(Paths.get("yourfile.txt")).replaceAll("\\R", ""));

Этот код сначала считывает содержимое файла при помощи Files.readString, затем удаляет все переводы строк с помощью функции replaceAll("\\R", "") и, наконец, перезаписывает файл при помощи Files.writeString. Просто и изящно!

Кинга Идем в IT: пошаговый план для смены профессии

Истина без сомнения: строки в Java

Строки в Java являются объектами, которые не могут быть изменены после их создания. Пока старое поколение упорно продолжает использовать кнопочные телефоны, строки стойко противостоят изменениям. Поэтому при удалении переводов строк или любой другой обработки строк требуется переназначение переменной:

Java
Скопировать код
String content = Files.readString(Paths.get("yourfile.txt"));
content = content.replace("\n", "").replace("\r", "");
Files.writeString(Paths.get("yourfile.txt"), content);

Универсальных переводы строк: Java-универсал

Java предлагает кросс-платформенное решение — System.getProperty("line.separator"), гарантирующее корректное выполнение в различных ОС:

Java
Скопировать код
String newline = System.getProperty("line.separator");
String content = Files.readString(Paths.get("yourfile.txt"));
content = content.replace(newline, "");
Files.writeString(Paths.get("yourfile.txt"), content);

Попавшие в сеть: использование Regex для повышения эффективности

С помощью регулярных выражений можно одновременно обрабатывать переводы строк разных типов:

Java
Скопировать код
String content = Files.readString(Paths.get("yourfile.txt"));
content = content.replaceAll("\\r\\n|\\r|\\n", "");
Files.writeString(Paths.get("yourfile.txt"), content);

Пробелы на страже от катастрофы конкатенации

Иногда переводы строк отделяют слова друг от друга, и их удаление без замены на пробел может вызвать некорректное слияние слов:

Java
Скопировать код
String content = Files.readString(Paths.get("yourfile.txt"));
content = content.replaceAll("\\R+", " ");
Files.writeString(Paths.get("yourfile.txt"), content);

При поддержке Apache Commons Lang

Apache Commons Lang предлагает StringUtils.normalizeSpace для упрощения нормализации пробелов в строках:

Java
Скопировать код
String content = FileUtils.readFileToString(new File("yourfile.txt"), Charset.defaultCharset());
content = StringUtils.normalizeSpace(content);
FileUtils.writeStringToFile(new File("yourfile.txt"), content, Charset.defaultCharset());

Вы можете добавить Apache Commons Lang в свой проект и использовать данный инструмент.

Визуализация

Восприятие файла можно представить как поезд, в вагонах которого расположены предложения, разделенные переводами строк:

Markdown
Скопировать код
🚂  = [Предложение 1⏎, Предложение 2⏎, Предложение 3⏎]

символизирует перевод строки.

Java
Скопировать код
text.withoutLineBreaks = text.replaceAll("\\R", "");

Теперь наш поезд не останавливается на станциях:

Markdown
Скопировать код
🚂 = [Предложение 1, Предложение 2, Предложение 3]

Наш поезд предложений превратился в молниеносный экспресс!

Стремимся к стремимся к идеалу (и к получению большего числа голосов на StackOverflow... хотя это и не главное)

Для эффективного удаления переводов строк необходима тщательная планировка и подход:

  • Используйте line.separator для обеспечения совместимости между различными ОС.
  • Заменяйте переводы строк на пробелы там, где это нужно, чтобы предотвратить нежелательную конкатенацию слов.
  • Используйте регулярные выражения, они обеспечивают гибкость в обработке переводов строк.
  • При работе с большими файлами обрабатывайте их построчно для экономии ресурсов.
  • Следите за кодировками файлов, так как они могут искажать переводы строк и другие символы.

Полезные материалы

  1. java.nio.file (Java Platform SE 8) — официальная документация Java для работы с файлами.
  2. Чтение и запись текстовых файлов — рекомендации по работе с файловым вводом/выводом в Java.
  3. Чтение обычного текстового файла в Java – Stack Overflow — обсуждение потенциальных решений для чтения файлов в Java.
  4. Ввод/вывод файлов (использование NIO.2) (The Java™ Tutorials > Essential Java Classes > Basic I/O) — руководство по основным операциям с файлами в Java.
  5. Удаление пробелов из строк в Java – Stack Overflow — обсуждение удаления лишних символов из строк.
  6. От удаления символа до изменения строки в Java | DigitalOcean — методы работы со строками в Java.
  7. Чтение файла в строку в Java (с примерами) — различные способы чтения файла в строку.