Java создать массив байт

Java создать массив байт

Для работы с массивами байтов — их чтения и записи используются классы ByteArrayInputStream и ByteArrayOutputStream.

Чтение массива байтов и класс ByteArrayInputStream

Класс ByteArrayInputStream представляет входной поток, использующий в качестве источника данных массив байтов. Он имеет следующие конструкторы:

ByteArrayInputStream(byte[] buf) ByteArrayInputStream(byte[] buf, int offset, int length)

В качестве параметров конструкторы используют массив байтов buf , из которого производится считывание, смещение относительно начала массива offset и количество считываемых символов length .

Считаем массив байтов и выведем его на экран:

import java.io.*; public class Program < public static void main(String[] args) < byte[] array1 = new byte[]; ByteArrayInputStream byteStream1 = new ByteArrayInputStream(array1); int b; while((b=byteStream1.read())!=-1) < System.out.println(b); >String text = "Hello world!"; byte[] array2 = text.getBytes(); // считываем 5 символов 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 Program < 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)

После выполнения этой программы в папке с программой появится файл hello.txt, который будет содержать строку «Hello Wolrd!».

И в заключении также надо сказать, что как и для объектов ByteArrayInputStream, для ByteArrayOutputStream не надо явным образом закрывать поток с помощью метода close .

Источник

How to Initialize a Byte Array in Java?

In this tutorial, we will learn how to initialize a byte array in Java.

What is a byte?

We all know that 8 bits = 1 byte or we can say a combination of eight zeros and ones. A byte represents a sort of digital information or data in binary format.

Byte in Java

A byte in Java is one of the primitive data types. It means, a byte stores the same size as that of computer memory.
If you look at some primitive data types in Java, you will see a byte stores values ranging from -128 to +127. That means we can store the values only from -128 to 127 and if we want some value greater than this range, then we can simply use datatype conversion.

Byte Array in Java

As we have seen, a byte is a combination of eight zeros and ones.
A byte array is a combination of bytes values. It means if you want to load some content directly into the memory then this can be helpful.

How to Initialize a byte array in Java?

Now, there are many ways in which we can initialize a byte array. Examples are given below:

public static void main(String[] args)< // Declaration of byte array byte[] myfirstarray = new byte[10]; >
public static void main(String[] args)< // Declaration of byte array byte myfirstarray[] = new byte[10]; >

When you assign memory to a byte array, initially the default value is zero. This is not only in byte array but also in all the arrays in Java. There is always some initial value allocated to every array.

Assigning Elements to byte array in Java

In Java, we assign elements to the Java array by indexing only.
An example is given below:

public static void main(String[] args) < // declaration of byte array byte[] values = new byte[5]; // Assigning elements values[0] = 12; values[1] = 10; values[2] = 75; values[3] = 40; values[4] = 101; // printing byte elements for(int i=0;i>

In this example, you can see, we have declared an array for byte with the size of 5. Then we have assigned values to it with the help of indexing. And printing all values with the help of for-loop iteration.
The output:

Element at 0: 12 Element at 1: 10 Element at 2: 75 Element at 3: 40 Element at 4: 101

Источник

Читайте также:  Адрес почты
Оцените статью