ByteArrayOutputStream
日本語 | バイト配列出力流れ |
英語 | byte array output stream |
ふりがな | ばいとあれいあうとぷっとすとりーむ |
フリガナ | バイトアレイアウトプットストリーム |
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.io.ByteArrayOutputStream。
ストリームクラス。OutputStreamクラスのサブクラスであり、バイト出力ストリームクラスである。
バイト出力ストリームクラスの中では「出力先」に位置する。
byte型の配列を出力先とするクラス。
通常、バイト出力ストリームはファイルやソケットを出力先とするが、ByteArrayOutputStreamクラスはbyte[]変数、つまりメモリを出力先とする。
ファイルやソケットは対象が存在しないとアクセスできないため、その代わりとして使用する。また、文字列等のメモリ上のデータを対象とする場合にも使用する。
ByteArrayOutputStreamクラスのコンストラクタには特に何も渡す必要はない。また、「出力先」、つまり「データ側の末端」であるため、OutputStreamクラスを引数に持つコンストラクタはない。
ByteArrayOutputStreamクラスのwrite()メソッドを用いてバイトデータを書き込む。引数がひとつのwrite()メソッドは、int型を引数に受け取るが、実際に処理されるのはbyte型のサイズのみのため、渡せる値は0x00~0xFFとなる。
書き込み先はByteArrayOutputStreamクラス内部となる。この書き込まれたバイトデータをbyte型配列として取り出す場合には、toByteArray()メソッドを呼び出す。
処理終了後は、対象が内部にあるため、最後にclose()メソッドを呼ぶ必要はない。
また、各メソッドもIOException例外を投げない。
ストリームクラス。OutputStreamクラスのサブクラスであり、バイト出力ストリームクラスである。
バイト出力ストリームクラスの中では「出力先」に位置する。
byte型の配列を出力先とするクラス。
通常、バイト出力ストリームはファイルやソケットを出力先とするが、ByteArrayOutputStreamクラスはbyte[]変数、つまりメモリを出力先とする。
ファイルやソケットは対象が存在しないとアクセスできないため、その代わりとして使用する。また、文字列等のメモリ上のデータを対象とする場合にも使用する。
ByteArrayOutputStreamクラスのコンストラクタには特に何も渡す必要はない。また、「出力先」、つまり「データ側の末端」であるため、OutputStreamクラスを引数に持つコンストラクタはない。
ByteArrayOutputStreamクラスのwrite()メソッドを用いてバイトデータを書き込む。引数がひとつのwrite()メソッドは、int型を引数に受け取るが、実際に処理されるのはbyte型のサイズのみのため、渡せる値は0x00~0xFFとなる。
書き込み先はByteArrayOutputStreamクラス内部となる。この書き込まれたバイトデータをbyte型配列として取り出す場合には、toByteArray()メソッドを呼び出す。
処理終了後は、対象が内部にあるため、最後にclose()メソッドを呼ぶ必要はない。
また、各メソッドもIOException例外を投げない。
// Sample.java
import java.io.ByteArrayOutputStream;
public class Sample
{
public static void main( String[] args )
{
// ByteArrayOutputStreamクラスを用意します。
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
// バイトデータを書き込みます。
byteArrayOutputStream.write( 0x01 );
byteArrayOutputStream.write( 0x02 );
byteArrayOutputStream.write( 0x03 );
byteArrayOutputStream.write( 0xFF );
byteArrayOutputStream.write( 0x100 );
// 書き込まれたバイトデータをbyte型配列として取得します。
byte[] bytes = byteArrayOutputStream.toByteArray();
for( int iF1 = 0; iF1 < bytes.length; ++iF1 )
{
// 出力します。
System.out.println( "0x" + Integer.toHexString( bytes[iF1] ) + " ( " + bytes[iF1] + " )" );
}
// 0x1 ( 1 )
// 0x2 ( 2 )
// 0x3 ( 3 )
// 0xffffffff ( -1 )
// 0x0 ( 0 )
// このように、書き込んだバイトデータはbyte型配列として
// 取得できます。
// write()メソッドはint型を受け取りますが、
// ByteArrayOutputStreamクラスは「バイト出力ストリーム」ですので
// byte型のサイズにしてから書き込みます。
// ByteArrayOutputStreamクラスはclose()メソッドを
// 呼ぶ必要はありません。
}
}
import java.io.ByteArrayOutputStream;
public class Sample
{
public static void main( String[] args )
{
// ByteArrayOutputStreamクラスを用意します。
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
// バイトデータを書き込みます。
byteArrayOutputStream.write( 0x01 );
byteArrayOutputStream.write( 0x02 );
byteArrayOutputStream.write( 0x03 );
byteArrayOutputStream.write( 0xFF );
byteArrayOutputStream.write( 0x100 );
// 書き込まれたバイトデータをbyte型配列として取得します。
byte[] bytes = byteArrayOutputStream.toByteArray();
for( int iF1 = 0; iF1 < bytes.length; ++iF1 )
{
// 出力します。
System.out.println( "0x" + Integer.toHexString( bytes[iF1] ) + " ( " + bytes[iF1] + " )" );
}
// 0x1 ( 1 )
// 0x2 ( 2 )
// 0x3 ( 3 )
// 0xffffffff ( -1 )
// 0x0 ( 0 )
// このように、書き込んだバイトデータはbyte型配列として
// 取得できます。
// write()メソッドはint型を受け取りますが、
// ByteArrayOutputStreamクラスは「バイト出力ストリーム」ですので
// byte型のサイズにしてから書き込みます。
// ByteArrayOutputStreamクラスはclose()メソッドを
// 呼ぶ必要はありません。
}
}
// Sample.java import java.io.ByteArrayOutputStream; public class Sample { public static void main( String[] args ) { // ByteArrayOutputStreamクラスを用意します。 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // バイトデータを書き込みます。 byteArrayOutputStream.write( 0x01 ); byteArrayOutputStream.write( 0x02 ); byteArrayOutputStream.write( 0x03 ); byteArrayOutputStream.write( 0xFF ); byteArrayOutputStream.write( 0x100 ); // 書き込まれたバイトデータをbyte型配列として取得します。 byte[] bytes = byteArrayOutputStream.toByteArray(); for( int iF1 = 0; iF1 < bytes.length; ++iF1 ) { // 出力します。 System.out.println( "0x" + Integer.toHexString( bytes[iF1] ) + " ( " + bytes[iF1] + " )" ); } // 0x1 ( 1 ) // 0x2 ( 2 ) // 0x3 ( 3 ) // 0xffffffff ( -1 ) // 0x0 ( 0 ) // このように、書き込んだバイトデータはbyte型配列として // 取得できます。 // write()メソッドはint型を受け取りますが、 // ByteArrayOutputStreamクラスは「バイト出力ストリーム」ですので // byte型のサイズにしてから書き込みます。 // ByteArrayOutputStreamクラスはclose()メソッドを // 呼ぶ必要はありません。 } }