Класс Writer
- java.lang.Object
-
- java.io.Writer
- Все реализованные интерфейсы:
-
Closeable,Flushable,Appendable,AutoCloseable
- Непосредственные известные подклассы:
-
BufferedWriter,CharArrayWriter,FilterWriter,OutputStreamWriter,PipedWriter,PrintWriter,StringWriter
public abstract class Writer extends Object implements Appendable, Closeable, Flushable
Абстрактный класс для записи в потоки символов. Единственные методы, которые должен реализовать подкласс, — write(char[], int, int), flush() и close(). Однако большинство подклассов переопределяют некоторые методы, определённые здесь, для повышения эффективности, добавления дополнительной функциональности или того и другого.
- С:
- 1.1
- См. также:
-
BufferedWriter,CharArrayWriter,FilterWriter,OutputStreamWriter,FileWriter,PipedWriter,PrintWriter,StringWriter,Reader
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected Object | lock | Объект, используемый для синхронизации операций с этим потоком. |
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | Writer() | Создаёт новый объект для записи в поток символов, чьи критические секции будут синхронизироваться на самом объекте записи. |
protected | Writer(Object lock) | Создаёт новый объект для записи в поток символов, чьи критические секции будут синхронизироваться на заданном объекте. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
Writer | append(char c) | Добавляет указанный символ в этот объект записи. |
Writer | append(CharSequence csq) | Добавляет указанную последовательность символов в этот объект записи. |
Writer | append(CharSequence csq,
int start,
int end) | Добавляет подпоследовательность указанной последовательности символов в этот объект записи. |
abstract void | close() | Закрывает поток, сначала выполнив его сброс. |
abstract void | flush() | Сбрасывает поток. |
static Writer | nullWriter() | Возвращает новый |
void | write(char[] cbuf) | Записывает массив символов. |
abstract void | write(char[] cbuf,
int off,
int len) | Записывает часть массива символов. |
void | write(int c) | Записывает один символ. |
void | write(String str) | Записывает строку. |
void | write(String str,
int off,
int len) | Записывает часть строки. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Поля
lock
protected Object lock
Объект, используемый для синхронизации операций с этим потоком. Для повышения эффективности объект потока символов может использовать другой объект, кроме самого себя, для защиты критических участков. Поэтому подкласс должен использовать объект в этом поле, а не this или синхронизированный метод.
Конструкторы
Writer
protected Writer()
Создаёт новый объект записи потока символов, критические участки которого будут синхронизированы на самом объекте записи.
Writer
protected Writer(Object lock)
Создаёт новый объект записи потока символов, критические участки которого будут синхронизированы на заданном объекте.
- Параметры:
-
lock- Объект для синхронизации
Методы
nullWriter
public static Writer nullWriter()
Возвращает новый Writer, который отбрасывает все символы. Возвращаемый поток изначально открыт. Поток закрывается вызовом метода close(). Последующие вызовы close() не имеют эффекта.
Пока поток открыт, методы append(char),
append(CharSequence), append(CharSequence, int, int), flush(), write(int), write(char[]), и write(char[], int, int) ничего не делают. После закрытия потока эти методы выбрасывают IOException.
Объект object, используемый для синхронизации операций с возвращённым Writer, не определён.
- Возвращает:
- новый
Writer, который отбрасывает все символы - С:
- 11
write
public void write(int c)
throws IOException Записывает один символ. Символ, подлежащий записи, содержится в 16 младших битах заданного целочисленного значения; 16 старших бит игнорируются.
Подклассы, которые намерены поддерживать эффективную запись отдельных символов, должны переопределить этот метод.
- Параметры:
-
c- целое число, определяющее символ для записи - Исключения:
-
IOException- Если произошла ошибка ввода-вывода
write
public void write(char[] cbuf)
throws IOException Записывает массив символов.
- Параметры:
-
cbuf- Массив символов для записи - Исключения:
-
IOException- Если произошла ошибка ввода-вывода
write
public abstract void write(char[] cbuf,
int off,
int len)
throws IOException Записывает часть массива символов.
- Параметры:
-
cbuf- Массив символов -
off- Смещение, с которого начинать запись символов -
len- Количество символов для записи - Исключения:
-
IndexOutOfBoundsException- Реализации должны генерировать это исключение, еслиoffотрицательно, илиlenотрицательно, илиoff + lenотрицательно или больше длины заданного массива -
IOException- Если произошла ошибка ввода-вывода
write
public void write(String str)
throws IOException Записывает строку.
- Параметры:
-
str- Записываемая строка - Исключения:
-
IOException- Если произошла ошибка ввода-вывода
write
public void write(String str,
int off,
int len)
throws IOException Записывает часть строки.
- Требования к реализации:
- Реализация в этом классе генерирует
IndexOutOfBoundsExceptionдля указанных условий; переопределяющие методы могут выбрать другое поведение. - Параметры:
-
str- Строка -
off- Смещение, с которого начинать запись символов -
len- Количество символов для записи - Исключения:
-
IndexOutOfBoundsException- Реализации должны генерировать это исключение, еслиoffотрицательно, илиlenотрицательно, илиoff + lenотрицательно или больше длины данной строки -
IOException- Если произошла ошибка ввода-вывода
append
public Writer append(CharSequence csq)
throws IOException Добавляет указанную последовательность символов к этому объекту записи.
Вызов этого метода в форме out.append(csq) ведёт себя точно так же, как вызов
out.write(csq.toString())
В зависимости от спецификации toString для последовательности символов csq, вся последовательность может не быть добавлена. Например, вызов метода toString буфера символов вернёт подпоследовательность, содержание которой зависит от позиции и предела буфера.
- Унаследовано от:
-
appendв интерфейсеAppendable - Параметры:
-
csq- Последовательность символов для добавления. Еслиcsqравняетсяnull, то к этому объекту записи добавляются четыре символа"null". - Возвращает:
- Этот объект записи
- Исключения:
-
IOException- Если произошла ошибка ввода-вывода - С:
- 1.5
append
public Writer append(CharSequence csq,
int start,
int end)
throws IOException Добавляет подпоследовательность указанной последовательности символов к этому объекту записи. Appendable.
Вызов этого метода в форме out.append(csq, start, end), когда csq не равняется null, ведёт себя точно так же, как вызов
out.write(csq.subSequence(start, end).toString())
- Унаследовано от:
-
appendв интерфейсеAppendable - Параметры:
-
csq- Последовательность символов, из которой будет добавлена подпоследовательность. Еслиcsqравняетсяnull, символы будут добавлены так, как будтоcsqсодержал четыре символа"null". -
start- Индекс первого символа в подпоследовательности -
end- Индекс символа, следующего за последним символом в подпоследовательности - Возвращает:
- Этот объект записи
- Исключения:
-
IndexOutOfBoundsException- Еслиstartилиendотрицательные,startбольшеend, илиendбольшеcsq.length() -
IOException- Если произошла ошибка ввода-вывода - С:
- 1.5
append
public Writer append(char c)
throws IOException Добавляет указанный символ к этому объекту записи.
Вызов этого метода в форме out.append(c) ведёт себя точно так же, как вызов
out.write(c)
- Унаследовано от:
-
appendв интерфейсеAppendable - Параметры:
-
c- 16-битный символ для добавления - Возвращает:
- Этот объект записи
- Исключения:
-
IOException- Если произошла ошибка ввода-вывода - С:
- 1.5
flush
public abstract void flush()
throws IOException Очищает поток. Если поток сохранил какие-либо символы из различных методов write() в буфере, запишите их немедленно в их предполагаемое место назначения. Затем, если это место назначения является другим потоком символов или байтов, очистите его. Таким образом, один вызов flush() очистит все буферы в цепочке объектов Writer и OutputStream.
Если предполагаемое место назначения этого потока — абстракция, предоставляемая операционной системой, например, файл, то очистка потока гарантирует только, что байты, ранее записанные в поток, переданы операционной системе для записи; это не гарантирует, что они фактически записаны на физическом устройстве, таком как жёсткий диск.
- Унаследовано от:
-
flushв интерфейсеFlushable - Исключения:
-
IOException- Если произошла ошибка ввода-вывода
close
public abstract void close()
throws IOException Закрывает поток, предварительно очистив его. После закрытия потока дальнейшие вызовы write() или flush() приведут к генерации исключения IOException. Закрытие уже закрытого потока не оказывает никакого эффекта.
- Унаследовано от:
-
closeв интерфейсеAutoCloseable - Унаследовано от:
-
closeв интерфейсеCloseable - Исключения:
-
IOException- Если произошла ошибка ввода-вывода
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Writer.html