Другой метод, Files.write(Path,Iterable,Charset,OpenOption...)
, может использоваться для записи CharSequence
s напрямую (a String
- это CharSequence
).
Запись строк текста в файл. Каждая строка представляет собой последовательность символов и записывается в файл последовательно, каждая строка заканчивается разделителем строк платформы, как определено системным свойством line.separator
. Символы кодируются в байты с использованием указанной кодировки.
Параметр options
указывает, как файл создается или открывается. Если параметры отсутствуют, этот метод работает так, как если бы присутствовали параметры CREATE, TRUNCATE_EXISTING и WRITE. Другими словами, он открывает файл для записи, создает файл, если он не существует, или сначала усекает существующий обычный файл до размера 0
. Этот метод гарантирует, что файл будет закрыт, когда все строки были записаны (или выдается ошибка ввода-вывода или другое исключение времени выполнения). Если возникает ошибка ввода-вывода, это может произойти после того, как файл был создан или усечен, или после того, как в файл были записаны некоторые байты.
Java 8 добавила перегрузку, которая не требует Charset
и использует UTF-8
по умолчанию.
Java 11 добавил еще один метод: Files.writeString(Path,CharSequence,Charset,OpenOption...)
.
Записать CharSequence в файл. Символы кодируются в байты с использованием указанной кодировки.
Все символы пишутся как есть, включая разделители строк в последовательности символов. Дополнительные символы не добавляются.
Параметр options
указывает, как файл создается или открывается. Если параметры отсутствуют, этот метод работает так, как если бы присутствовали параметры CREATE, TRUNCATE_EXISTING и WRITE. Другими словами, он открывает файл для записи, создает файл, если он не существует, или сначала усекает существующий обычный файл до размера 0
.
Этот метод также имеет перегрузку, которая не требует Charset
, с использованием UTF-8
в качестве значения по умолчанию снова.
Однако под капотом CharSequence
преобразуются в байты, как это упоминает Scary Wombat и yshavit в комментариях к вопросу. Документация этих методов даже делает это явным:
Символы кодируются в байты с использованием указанной кодировки.