Руководство по Java metanit com Данный раздел посвящен языку программирования Java и всем сопутствующим


Буферизуемые потоки. Классы BufferedInputStream и



Download 1,75 Mb.
Pdf ko'rish
bet54/110
Sana23.02.2022
Hajmi1,75 Mb.
#177154
TuriРуководство
1   ...   50   51   52   53   54   55   56   57   ...   110
Bog'liq
2 5305247065486395003

Буферизуемые потоки. Классы BufferedInputStream и
BufferedOuputStream
Для оптимизации операций ввода-вывода используются буферизуемые потоки. Эти потоки
добавляют к стандартным специальный буфер в памяти, с помощью которого повышается
производительность при чтении и записи потоков.
Класс BufferedInputStream
Класс BufferedInputStream накапливает вводимые данные в специальном буфере без
постоянного обращения к устройству ввода:
import java.io.*;
public class FilesApp {
public static void main(String[] args) {
String text = "Hello world!";
byte[] buffer = text.getBytes();
ByteArrayInputStream in = new ByteArrayInputStream(buffer);
try(BufferedInputStream bis = new BufferedInputStream(in)){
int c;
while((c=bis.read())!=-1){
System.out.print((char)c);
}
}
catch(Exception e){
System.out.println(e.getMessage());
}
System.out.println();
}
}
Класс BufferedInputStream в конструкторе принимает объект InputStream. В данном случае
таким объектом является экземпляр класса ByteArrayInputStream.
Как и все потоки ввода BufferedInputStream обладает методом read(), который считывает
данные. И здесь мы считываем с помощью метода read каждый байт из массива buffer.
Фактические все то же самое можно было сделать и с помощью одного
ByteArrayInputStream, не прибегая к буферизированному потоку. Класс BufferedInputStream
просто оптимизирует производительность при работе с потоком ByteArrayInputStream.
Класс BufferedOutputStream
Класс BufferedOutputStream аналогично создает буфер для потоков вывода. Этот буфер
накапливает выводимые байты без постоянного обращения к устройству. И когда буфер
заполнен, производится запись данных. Рассмотрим на примере:
import java.io.*;
public class FilesApp {
public static void main(String[] args) {
String text = "Hello world!"; // строка для записи
try(FileOutputStream out=new FileOutputStream("notes.txt");
BufferedOutputStream bos = new BufferedOutputStream(out))
{
// перевод строки в байты
byte[] buffer = text.getBytes();
bos.write(buffer, 0, buffer.length);
}
catch(IOException ex){
System.out.println(ex.getMessage());
}
}


}
Класс BufferedOutputStream в конструкторе принимает в качестве параметра объект
OutputStream - в данном случае это файловый поток вывода FileOutputStream. И также
производится запись в файл. Опять же BufferedOutputStream не добавляет много новой
функциональности, он просто оптимизирует действие потока вывода.



Download 1,75 Mb.

Do'stlaringiz bilan baham:
1   ...   50   51   52   53   54   55   56   57   ...   110




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish