Я хотел бы сохранить некоторые слова в *.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).
Используйте 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"));
Попробуйте с 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")?
System.lineSeparator()
за исключением того факта, что System.lineSeparator()
считывает системное свойство line.separator
только один раз?
Ну, это зависит от того, как вы записываете контент. Если вы напишете файл в файловой системе, это, скорее всего, будет правильно. Но вы не сохраняете его в файле с вашей программой, но вы позволяете обозревателю сделать это, включив ссылку в html файл. При включении символов в HTML вам необходимо закодировать их с классом URLEncoder.
Поскольку мне кажется, что вы работаете в WebContainer, поскольку у вас есть структуры JSP, вы также можете реализовать сервлет, который возвращает запрошенные данные.
content
.