JavaA2Z

KAB-studio > プログラミング > JavaA2Z > ByteArrayInputStreamとは

ByteArrayInputStream

日本語 バイト配列入力流れ
英語 byte array input stream
ふりがな ばいとあれいいんぷっとすとりーむ
フリガナ バイトアレイインプットストリーム

解説

J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名java.io.ByteArrayInputStream。
ストリームクラスInputStreamクラスサブクラスであり、バイト入力ストリームクラスである。
バイト入力ストリームクラスの中では「入力元」に位置する。
対になる出力側のクラスByteArrayOutputStreamクラスである。
 
byte配列を入力元とするクラス
通常、バイト入力ストリームファイルソケットを入力元とするが、ByteArrayInputStreamクラスbyte[]変数、つまりメモリを入力元とする。
ファイルソケットは対象が存在しないとアクセスできないため、その代わりとして使用する。また、文字列等のメモリ上のデータを対象とする場合にも使用する。
 
ByteArrayInputStreamクラスコンストラクタに入力元のbyte配列を渡すことで、入力元を指定する。「入力元」、つまり「データ側の末端」であるため、InputStreamクラス引数に持つコンストラクタはない。
ByteArrayInputStreamクラスのread()メソッドを用いて入力元のbyte配列から各バイトを取得する。この時、入力元のbyte配列を「整数値」としてではなく「バイトデータ」として処理する。つまり、整数値として「-1」(0xFF)が格納されていたとしても、read()メソッドは「255」(0x000000FF)を返す。これは「整数値」としての値ではなく「バイト」としての値を維持して返すためである。
処理終了後は、対象がbyte配列のため、最後にclose()メソッドを呼ぶ必要はない。
また、各メソッドIOException例外を投げない。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

使用例// Sample.java
import java.io.ByteArrayInputStream;

public class Sample
{
    public static void main( String[] args )
    {
        // 処理対象のバイト配列。
        byte[] bytes = new byte[]{ 1, 2, 3, -1 };
        // そのバイト配列を読み込み対象とする
        // ByteArrayInputStreamクラスを用意します。
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( bytes );

        while( true )
        {
            // 1バイト取得します。
            int i = byteArrayInputStream.read();
            if( i == -1 )
            {
                // -1が返されてきたら終わりです。
                break;
            }

            // 出力します。
            System.out.println( "0x" + Integer.toHexString( i ) + " ( " + i + " )" );
        }
        // 0x1 ( 1 )
        // 0x2 ( 2 )
        // 0x3 ( 3 )
        // 0xff ( 255 )

        // このように、byte配列の各要素を取得します。
        // また、各要素は「バイトデータ」としてみなして
        // int型に変換して返されるため、このように-1(0xFF)は
        // 255(0x000000FF)と、バイトデータを維持した形で
        // 返されます。



        // ByteArrayInputStreamクラスはclose()メソッドを
        // 呼ぶ必要はありません。
    }
}
使用例// Sample.java
import java.io.ByteArrayInputStream;

public class Sample
{
    public static void main( String[] args )
    {
        // 処理対象のバイト配列。
        byte[] bytes = new byte[]{ 1, 2, 3, -1 };
        // そのバイト配列を読み込み対象とする
        // ByteArrayInputStreamクラスを用意します。
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( bytes );

        while( true )
        {
            // 1バイト取得します。
            int i = byteArrayInputStream.read();
            if( i == -1 )
            {
                // -1が返されてきたら終わりです。
                break;
            }

            // 出力します。
            System.out.println( "0x" + Integer.toHexString( i ) + " ( " + i + " )" );
        }
        // 0x1 ( 1 )
        // 0x2 ( 2 )
        // 0x3 ( 3 )
        // 0xff ( 255 )

        // このように、byte配列の各要素を取得します。
        // また、各要素は「バイトデータ」としてみなして
        // int型に変換して返されるため、このように-1(0xFF)は
        // 255(0x000000FF)と、バイトデータを維持した形で
        // 返されます。



        // ByteArrayInputStreamクラスはclose()メソッドを
        // 呼ぶ必要はありません。
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/11/11
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。