33 Java. Потоки ввода-вывода. Работа с файлами. Белорусский государственный экономический университет кафедра экономической информатики
Скачать 1.6 Mb.
|
Класс BufferedInputStreamКласс BufferedInputStream накапливает вводимые данные в специальном буфере без постоянного обращения к устройству ввода. Класс BufferedInputStream определяет два конструктора: BufferedInputStream(InputStream inputStream) BufferedInputStream(InputStream inputStream, int bufSize) Первый параметр (inputStream) - это поток ввода, с которого данные будут считываться в буфер. Второй параметр - размер буфера. Например, буферизируем считывание данных из потока FileInputStream. Пример. Результат работы программы: Класс BufferedInputStream в конструкторе принимает объект fin. В данном случае таким объектом является экземпляр класса FileInputStream. Как и все потоки ввода BufferedInputStream обладает методом read(), который считывает данные. Соответственно здесь также считываются данные с помощью метода read(). Класс BufferedInputStream просто оптимизирует производительность при работе с потоком FileInputStream. Естественно, вместо FileInputStream может использоваться любой другой класс, который унаследован от InputStream. Буферизация символьных потоков.BufferedReader и BufferedWriter Класс BufferedWriter записывает текст в поток, предварительно буферизируя записываемые символы, тем самым снижая количество обращений к физическому носителю для записи данных. Класс BufferedWriter имеет следующие конструкторы: BufferedWriter(Writer out) BufferedWriter(Writer out, int sz) В качестве параметра каждый из конструкторов принимает поток вывода (out), в который надо осуществить запись. Второй параметр (sz) указывает на размер буфера. Замечание. Так как BufferedWriter потомок класса Writer, то он можетиспользоватьвсетеметодыдлячтенияизпотока,которыеопределенывReader. Класс BufferedReader считывает текст из символьного потока ввода, буферизируя прочитанные символы. Использование буфера призвано увеличить производительность чтения данных из потока. Класс BufferedReader имеет аналогичные конструкторы: BufferedReader(Reader in) BufferedReader(Reader in, int sz) Замечание. Так как BufferedReader наследуется от класса Reader, то онможетиспользоватьвсетеметодыдлячтенияизпотока,которыеопределенывReader,атакжеBufferedReader определяетсвойсобственныйметодreadLine(),которыйпозволяетсчитыватьизпотока построчно. Очевидно, что применительно к записи/чтению в/из файла классы должны работать в паре: FileWriter и BufferedWriter; FileReader и BufferedReader. Пример. Результат работы программы: |