کلاس ByteArrayOutputStream

کلاس ByteArrayOutputStream کلاسی است که به ما اجازه می دهد یک استریم خروجی را به آرایه ای از بایت ها تبدیل کنیم ، این کلاس یک کلاس واسط است و به عنوان یک ابزار کمکی در کنار کلاس های پیشرفته تر استفاده می شود ، بیشترین کاربرد این کلاس در شبکه است که به ما اجازه می دهد انواع مختلفی از OutputStream ها را به آرایه ای از بایت تبدیل و در شبکه ارسال کنیم. برای استفاده از این کلاس باید از یکی از سازنده های زیر برای ساخت شی جدید از آن استفاده کنیم :

ByteArrayOutputStream ()
ByteArrayOutputStream (int bufferSize)

متد های پر کاربرد ByteArrayOutputStream در جدول زیر آمده است:

متد کاربرد
close () جریان خروجی را بسته و منابع استفاده شده را آزاد می کند
toByteArray() مهم ترین متد این کلاس است و در انتهای عملیات می توانیم از آن برای تبدیل استریم به آرایه استفاده کنیم.
toString() استریم را به رشته تبدیل می کند.
toString(String charsetName) بر اساس یک Charset خاص استریم را به رشته تبدیل می کند.
write(int byte) یک بایت در استریم می نویسد.
write(byte[] b) یک آرایه از بایت ها را در استریم می نویسد.
write(byte[] b,int offset,int length) قسمتی از یک آرایه از بایت ها را در استریم می نویسد.
write(OutputStream out) محتوای استریم را در OutputStream دیگری می نویسد.

مثال

import java.io.*;

public class ByteArrayOutputStreamDemo
{
    public ByteArrayOutputStreamDemo()
    {
        ByteArrayOutputStream baytearrayoutputstream = null;

        baytearrayoutputstream = new ByteArrayOutputStream();

        try
        {
            baytearrayoutputstream.write("Hello Java".getBytes());
            baytearrayoutputstream.write(" IO".getBytes());
            System.out.println(baytearrayoutputstream.toString());
            byte[] result = baytearrayoutputstream.toByteArray();
            baytearrayoutputstream.close();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
    public static void main(String[] args)
    {
        new ByteArrayOutputStreamDemo();
    }
}

در مثال بالا ابتدا یک ByteArrayOutputStream ایجاد می کنیم. سپس چند بار از متد write برای نوشتن در آن استفاده می کنیم ، از آنجایی که متد write آرایه ای از بایت ها را می پذیرد لذا باید رشته ها را با استفاده از متد getBytes به آرایه ای از بایت ها تبدیل کنیم.با استفاده از متد toString محتوای کل استریم را به دست می آوریم و سپس آن را چاپ می کنیم و در انتها کل استریم را به آرایه ای از بایت ها (result) تبدیل می کنیم (که البته در این مثال از result استفاده خاصی نمی کنیم و هدف فقط آشنایی با نحوه استفاده از متد toByteArray بود).