Классы ByteArrayOutputStream и ByteArrayInputStream работают с массивами байтов. ByteArrayInputStream при создании получает массив байтов и устанавливает его себе во внутреннее поле. Далее предоставляет стандартные потоковые методы для чтения этого массива байтов. ByteArrayOutputStream также внутри себя хранит данные в массиве байтов и автоматически расширяется при выводе байтов в поток. Все методы синхронизированы.
Пример:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package javainputoutput;
/** * * @author martyshov */ import java.io.*; import java.nio.*;
public class JavaInputOutput {
/** * @param args the command line arguments */ public static void main(String[] args) throws IOException {
ByteArrayOutputStream bao = new ByteArrayOutputStream();
try { byte[] byte_arr = {1, 2, 3, 30, 11, 45, 77}; //пишем массив байтов bao.write(byte_arr); //пишем байт в поток bao.write(123); //сохраняем содержание потока в файле FileOutputStream fos = new FileOutputStream("C:/arr_out.txt"); bao.writeTo(fos);
} catch (IOException e) { System.err.println(e.getLocalizedMessage()); } finally { bao.close(); }
//создаем и инициализируем поток массивом байтов byte[] byte_arr = {1, 2, 3, 125, 11, 45, 77}; ByteArrayInputStream bai = new ByteArrayInputStream(byte_arr);
try { //выводим из потока посимвольно Integer ch; while ((ch = bai.read()) != -1) { System.out.print(ch.toString() + ", "); }
System.out.println("\n"); } catch (Exception e) { System.err.println(e.getLocalizedMessage()); } finally { bai.close(); }
}
}
|