Класс BufferedWriter
- java.lang.Object
-
- java.io.Writer
-
- java.io.BufferedWriter
- Все реализованные интерфейсы:
- Closeable, Flushable, Appendable, AutoCloseable
public class BufferedWriter extends Writer
Записывает текст в поток символьного вывода, буферизуя символы для эффективной записи отдельных символов, массивов и строк.
Размер буфера можно указать или принять значение по умолчанию. Значение по умолчанию достаточно для большинства случаев.
Предоставлен метод newLine(), который использует собственную концепцию разделителя строк платформы, определённую системной переменной line.separator. Не все платформы используют символ новой строки ('\n') для завершения строк. Поэтому предпочтительнее вызывать этот метод для завершения каждой строки вывода, чем писать символ новой строки напрямую.
В общем случае Writer сразу отправляет свой вывод в базовый поток символов или байтов. Если не требуется моментальный вывод, рекомендуется обернуть BufferedWriter вокруг любого Writer, чьи операции write() могут быть дорогостоящими, такие как FileWriters и OutputStreamWriters. Например,
PrintWriter out
= new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
буферизует вывод PrintWriter в файл. Без буферизации каждый вызов метода print() приводил бы к преобразованию символов в байты, которые затем сразу записывались бы в файл, что может быть очень неэффективно.
- С тех пор:
- JDK1.1
- См. также:
-
PrintWriter,FileWriter,OutputStreamWriter,Files.newBufferedWriter(java.nio.file.Path, java.nio.charset.Charset, java.nio.file.OpenOption...)
Сводка полей
Наследуемые поля из класса java.io.Writer
lock
Сводка конструкторов
| Конструктор и описание |
|---|
BufferedWriter(Writer out)
Создаёт буферизованный поток символьного вывода, использующий буфер вывода по умолчанию. |
BufferedWriter(Writer out,
int sz)
Создаёт новый буферизованный поток символьного вывода, использующий буфер вывода заданного размера. |
Сводка методов
| Модификатор и тип | Метод и описание |
|---|---|
void |
close()
Закрывает поток, предварительно его сбросив. |
void |
flush()
Сбрасывает поток. |
void |
newLine()
Записывает разделитель строк. |
void |
write(char[] cbuf,
int off,
int len)
Записывает часть массива символов. |
void |
write(int c)
Записывает один символ. |
void |
write(String s,
int off,
int len)
Записывает часть строки. |
Наследуемые методы из класса java.io.Writer
append, append, append, write, write
Наследуемые методы из класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Подробное описание конструкторов
BufferedWriter
public BufferedWriter(Writer out)
Создаёт буферизованный поток символьного вывода, использующий буфер вывода по умолчанию.
- Параметры:
-
out- Writer
BufferedWriter
public BufferedWriter(Writer out,
int sz)
Создаёт новый буферизованный поток символьного вывода, использующий буфер вывода заданного размера.
- Параметры:
-
out- Writer -
sz- Размер буфера вывода, положительное целое число - Исключения:
-
IllegalArgumentException- Еслиsz <= 0
Подробное описание методов
write
public void write(int c)
throws IOException
Записывает один символ.
- Переопределяет:
-
writeв классеWriter - Параметры:
-
c- целое число, задающее символ для записи - Исключения:
-
IOException- Если произошла ошибка ввода/вывода
write
public void write(char[] cbuf,
int off,
int len)
throws IOException
Записывает часть массива символов.
Обычно этот метод сохраняет символы из заданного массива в буфер потока, сбрасывая буфер в базовый поток по мере необходимости. Однако, если запрошенная длина не меньше размера буфера, этот метод сбросит буфер и запишет символы напрямую в базовый поток. Таким образом, избыточные BufferedWriter не будут копировать данные ненужно.
- Определено:
-
writeв классеWriter - Параметры:
-
cbuf- массив символов -
off- Смещение для начала чтения символов -
len- Количество символов для записи - Исключения:
-
IOException- Если произошла ошибка ввода/вывода
write
public void write(String s,
int off,
int len)
throws IOException
Записывает часть строки.
Если значение параметра len отрицательно, символы не записываются. Это противоречит спецификации этого метода в суперклассе superclass, который требует броска IndexOutOfBoundsException.
- Переопределяет:
-
writeв классеWriter - Параметры:
-
s- Строка для записи -
off- Смещение для начала чтения символов -
len- Количество символов для записи - Исключения:
-
IOException- Если произошла ошибка ввода/вывода
newLine
public void newLine()
throws IOException
Записывает разделитель строк. Строка разделителя строк определяется системной переменной line.separator, и не обязательно является одиночным символом новой строки ('\n').
- Исключения:
-
IOException- Если произошла ошибка ввода/вывода
flush
public void flush()
throws IOException
Сбрасывает поток.
- Определено:
-
flushв интерфейсеFlushable - Определено:
-
flushв классеWriter - Исключения:
-
IOException- Если произошла ошибка ввода/вывода
close
public void close()
throws IOException
Описание скопировано из класса: Writer
Закрывает поток, предварительно его сбросив. После закрытия потока дальнейшие вызовы write() или flush() приведут к броску исключения IOException. Закрытие уже закрытого потока не оказывает никакого влияния.
- Определено:
-
closeв интерфейсеCloseable - Определено:
-
closeв интерфейсеAutoCloseable - Определено:
-
closeв классеWriter - Исключения:
-
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.