Разделитель строк для Windows в Java

1

Я хотел бы сохранить некоторые слова в *.txt файл. Но есть одно условие: каждое слово должно быть на новой строке. Поэтому я написал следующее:

String content ="";
String nl = System.lineSeparator();
content += "my" + nl + "some" + nl + "random" + nl + "words";

Но этот код не работает - все слова находятся в одной строке.

Поэтому я пробовал со специальными символами - \r\n:

String content ="";
content += "my" + "\r\n" + "some" + "\r\n" + "random" + "\r\n" + "words";

Все еще не работает - в файле все слова находятся в одной строке:

mysomerandomwords

В дополнение к этому: мое строковое content сохраняется в файле:

<a href="data:text/txt;charset=utf-8,<%=content%>" download="results.txt"><button class="button">Download</button></a>

Какой разделитель я должен использовать, чтобы помещать слова в другие строки?

(Я использую Netbeans 8.0. Файл открывается в блокноте Windows).

  • 0
    Попробуйте URL Кодирование content .
  • 0
    Избегайте использования Windows-блокнота. если вы не хотите использовать что-то вроде Notepad ++, попробуйте Windows WordPad, по крайней мере, он отображает разделители строк.
Теги:
string
file
newline

3 ответа

2
Лучший ответ

Используйте base64 в схеме URI data:

<a href="data:text/txt;charset=utf-8;base64,<%=base64_content%>" download="results.txt"><button class="button">Download</button></a>

В коде Java выполните:

String content ="";
String nl = System.getProperty("line.separator");
content += "my" + nl + "some" + nl + "random" + nl + "words";
content = DatatypeConverter.printBase64Binary(content.getBytes("utf-8"));

Демо: http://jsfiddle.net/bDRAq

  • 0
    теперь он сохраняет данные в файл в base64.
  • 1
    @ 1_bug Это не так, если все сделано правильно: jsfiddle.net/bDRAq (извините, я пропустил base64, обновлено)
Показать ещё 1 комментарий
2

Попробуйте с System.getProperty("line.separator")

Прочтите здесь о свойствах системы с полным списком свойств системы.

Класс System поддерживает объект Properties, который описывает конфигурацию текущей рабочей среды.

"line.separator" - последовательность, используемая операционной системой для разделения строк в текстовых файлах


Что означает System.lineSeparator()?

Возвращает системную строку разделителя строк. Он всегда возвращает одно и то же значение - начальное значение свойства system.separator.

В системах UNIX он возвращает "\n"; в системах Microsoft Windows он возвращает "\ r\n".


Зачем использовать System.getProperty()?

Свойство "line.separator" может быть изменено путем передачи аргументов, как показано ниже

java -Dline.separator=

Посмотрите, должен ли я кэшировать System.getProperty("line.separator")?

  • 0
    Почему? это отличается от System.lineSeparator ()?
  • 2
    Чем это отличается от System.lineSeparator() за исключением того факта, что System.lineSeparator() считывает системное свойство line.separator только один раз?
Показать ещё 5 комментариев
1

Ну, это зависит от того, как вы записываете контент. Если вы напишете файл в файловой системе, это, скорее всего, будет правильно. Но вы не сохраняете его в файле с вашей программой, но вы позволяете обозревателю сделать это, включив ссылку в html файл. При включении символов в HTML вам необходимо закодировать их с классом URLEncoder.

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

  • 0
    Я попробовал URLEncoder, и он работает, но если у меня были строки типа «A = 2», «B = 5» и т. Д., Он возвращает «A + 2», «B + 5».

Ещё вопросы

Сообщество Overcoder
Наверх
Меню