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


Классы ByteArrayInputStream и ByteArrayOutputStream



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

Классы ByteArrayInputStream и ByteArrayOutputStream
Для работы с массивами байтов - их чтения и записи используются классы
ByteArrayInputStream и ByteArrayOutputStream.
Чтение массива байтов и класс ByteArrayInputStream
Класс ByteArrayInputStream представляет входной поток, использующий в качестве
источника данных массив байтов. Он имеет следующие конструкторы:
ByteArrayInputStream(byte[] buf)
ByteArrayInputStream(byte[] buf, int offset, int length)
В качестве параметров конструкторы используют массив байтов buf, из которого
производится считывание, смещение относительно начала массива offset и количество
считываемых символов length.
Считаем массив байтов и выведем его на экран:
import java.io.*;
public class FilesApp {
public static void main(String[] args) {
byte[] array1 = new byte[]{1, 3, 5, 7};
ByteArrayInputStream byteStream1 = new ByteArrayInputStream(array1);
int b;
while((b=byteStream1.read())!=-1){
System.out.println(b);
}
String text = "Hello world!";
byte[] array2 = text.getBytes();
ByteArrayInputStream byteStream2 = new ByteArrayInputStream(array2, 0, 5);
int c;
while((c=byteStream2.read())!=-1){
System.out.println((char)c);
}
}
}
В отличие от других классов потоков для закрытия объекта ByteArrayInputStream не
требуется вызывать метод close.
Запись массива байт и класс ByteArrayOutputStream
Класс ByteArrayOutputStream представляет поток вывода, использующий массив байтов в
качестве места вывода.
Чтобы создать объект данного класса, мы можем использовать один из его конструкторов:
ByteArrayOutputStream()
ByteArrayOutputStream(int size)
Первая версия создает массив для хранения байтов длиной в 32 байта, а вторая версия
создает массив длиной size.
Рассмотрим применение класса:
import java.io.*;
public class FilesApp {
public static void main(String[] args) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String text = "Hello Wolrd!";
byte[] buffer = text.getBytes();
try{
baos.write(buffer);
}
catch(Exception ex){
System.out.println(ex.getMessage());
}


// превращаем массив байтов в строку
System.out.println(baos.toString());
// получаем массив байтов и выводим по символьно
byte[] array = baos.toByteArray();
for(byte b: array){
System.out.print((char)b);
}
System.out.println();
}
}
Как и в других потоках вывода в классе ByteArrayOutputStream определен метод write,
который записывает в поток некоторые данные. В данном случае мы записываем в поток массив
байтов. Этот массив байтов записывается в объекте ByteArrayOutputStream в защищенное поле
buf, которое представляет также массив байтов (protected byte[] buf).
Так как метод write может сгенерировать исключение, то вызов этого метода помещается в
блок try..catch.
Используя методы toString() и toByteArray(), можно получить массив байтов buf в виде
текста или непосредственно в виде массива байт.
С помощью метода writeTo мы можем вывести массив байт в другой поток. Данный метод в
качестве параметра принимает объект OutputStream, в который производится запись массива
байт:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String text = "Hello Wolrd!";
byte[] buffer = text.getBytes();
try{
baos.write(buffer);
}
catch(Exception ex){
System.out.println(ex.getMessage());
}
try(FileOutputStream fos = new FileOutputStream("hello.txt")){
baos.writeTo(fos);
}
catch(IOException e){
System.out.println(e.getMessage());
}
И в заключении также надо сказать, что как и для объектов ByteArrayInputStream, для
ByteArrayOutputStream не надо явным образом закрывать поток с помощью метода close.



Download 1,75 Mb.

Do'stlaringiz bilan baham:
1   ...   49   50   51   52   53   54   55   56   ...   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