SequenceInputStream
| 日本語 | 連続入力流れ |
| 英語 | sequence input stream |
| ふりがな | しーけんすいんぷっとすとりーむ、しーくぇんすいんぷっとすとりーむ |
| フリガナ | シーケンスインプットストリーム、シークェンスインプットストリーム |
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.io.SequenceInputStream。
ストリームクラス。InputStreamクラスのサブクラスであり、バイト入力ストリームクラスである。
バイト入力ストリームクラスの中では「中継ぎ」に位置する。
対になる出力側のクラスは存在しない。
複数のバイト入力ストリームを接続するクラス。
InputStreamクラスのサブクラスを「連結」して、ひとつのバイト入力ストリームと見なして取得する場合に使用する。
SequenceInputStreamクラスのコンストラクタには、複数の「InputStreamクラスのサブクラス」をVectorクラスに追加し、elements()メソッドで取得したEnumerationインターフェイスを渡すことで、その複数の「InputStreamクラスのサブクラス」をひとつのバイト入力ストリームと見なして取得することができる。
SequenceInputStreamクラスのread()メソッドを用いて引数に渡した複数のバイト入力ストリームから、その区別なしに取得する。取得する順番は、Vector内に格納した順番となる。
処理終了後はclose()メソッドを用いて閉じる。
ストリームクラス。InputStreamクラスのサブクラスであり、バイト入力ストリームクラスである。
バイト入力ストリームクラスの中では「中継ぎ」に位置する。
対になる出力側のクラスは存在しない。
複数のバイト入力ストリームを接続するクラス。
InputStreamクラスのサブクラスを「連結」して、ひとつのバイト入力ストリームと見なして取得する場合に使用する。
SequenceInputStreamクラスのコンストラクタには、複数の「InputStreamクラスのサブクラス」をVectorクラスに追加し、elements()メソッドで取得したEnumerationインターフェイスを渡すことで、その複数の「InputStreamクラスのサブクラス」をひとつのバイト入力ストリームと見なして取得することができる。
SequenceInputStreamクラスのread()メソッドを用いて引数に渡した複数のバイト入力ストリームから、その区別なしに取得する。取得する順番は、Vector内に格納した順番となる。
処理終了後はclose()メソッドを用いて閉じる。
// Sample.java
import java.util.Vector;
import java.io.ByteArrayInputStream;
import java.io.SequenceInputStream;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
ByteArrayInputStream byteArrayInputStream1 = null;
ByteArrayInputStream byteArrayInputStream2 = null;
SequenceInputStream sequenceInputStream = null;
try
{
// 処理対象のバイト配列1。
byte[] bytes1 = new byte[]{ 1, 2, 3 };
// そのバイト配列を読み込み対象とする
// ByteArrayInputStreamクラス。
byteArrayInputStream1 = new ByteArrayInputStream( bytes1 );
// 同じくもうひとつ。
byte[] bytes2 = new byte[]{ 4, 5, 6 };
byteArrayInputStream2 = new ByteArrayInputStream( bytes2 );
// このふたつを格納するVectorクラスを用意します。
Vector vector = new Vector();
vector.add( byteArrayInputStream1 );
vector.add( byteArrayInputStream2 );
// この2つを対象とするSequenceInputStreamクラスを用意します。
sequenceInputStream = new SequenceInputStream( vector.elements() );
while( true )
{
// 1バイト取得します。
int i = sequenceInputStream.read();
if( i == -1 )
{
// -1が返されてきたら終わりです。
break;
}
// 出力します。
System.out.println( "0x" + Integer.toHexString( i ) + " ( " + i + " )" );
}
// 0x1 ( 1 )
// 0x2 ( 2 )
// 0x3 ( 3 )
// 0x4 ( 4 )
// 0x5 ( 5 )
// 0x6 ( 6 )
// このように、2つのストリームから立て続けに
// 取得することができます。
}
catch( IOException e )
{
// 読み込みに失敗した際に、read()メソッドが
// IOException例外を投げます。
e.printStackTrace();
}
finally
{
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( sequenceInputStream != null )
{
sequenceInputStream.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( byteArrayInputStream2 != null )
{
byteArrayInputStream2.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( byteArrayInputStream1 != null )
{
byteArrayInputStream1.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
}
}
}
import java.util.Vector;
import java.io.ByteArrayInputStream;
import java.io.SequenceInputStream;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
ByteArrayInputStream byteArrayInputStream1 = null;
ByteArrayInputStream byteArrayInputStream2 = null;
SequenceInputStream sequenceInputStream = null;
try
{
// 処理対象のバイト配列1。
byte[] bytes1 = new byte[]{ 1, 2, 3 };
// そのバイト配列を読み込み対象とする
// ByteArrayInputStreamクラス。
byteArrayInputStream1 = new ByteArrayInputStream( bytes1 );
// 同じくもうひとつ。
byte[] bytes2 = new byte[]{ 4, 5, 6 };
byteArrayInputStream2 = new ByteArrayInputStream( bytes2 );
// このふたつを格納するVectorクラスを用意します。
Vector vector = new Vector();
vector.add( byteArrayInputStream1 );
vector.add( byteArrayInputStream2 );
// この2つを対象とするSequenceInputStreamクラスを用意します。
sequenceInputStream = new SequenceInputStream( vector.elements() );
while( true )
{
// 1バイト取得します。
int i = sequenceInputStream.read();
if( i == -1 )
{
// -1が返されてきたら終わりです。
break;
}
// 出力します。
System.out.println( "0x" + Integer.toHexString( i ) + " ( " + i + " )" );
}
// 0x1 ( 1 )
// 0x2 ( 2 )
// 0x3 ( 3 )
// 0x4 ( 4 )
// 0x5 ( 5 )
// 0x6 ( 6 )
// このように、2つのストリームから立て続けに
// 取得することができます。
}
catch( IOException e )
{
// 読み込みに失敗した際に、read()メソッドが
// IOException例外を投げます。
e.printStackTrace();
}
finally
{
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( sequenceInputStream != null )
{
sequenceInputStream.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( byteArrayInputStream2 != null )
{
byteArrayInputStream2.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( byteArrayInputStream1 != null )
{
byteArrayInputStream1.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
}
}
}
// Sample.java
import java.util.Vector;
import java.io.ByteArrayInputStream;
import java.io.SequenceInputStream;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
ByteArrayInputStream byteArrayInputStream1 = null;
ByteArrayInputStream byteArrayInputStream2 = null;
SequenceInputStream sequenceInputStream = null;
try
{
// 処理対象のバイト配列1。
byte[] bytes1 = new byte[]{ 1, 2, 3 };
// そのバイト配列を読み込み対象とする
// ByteArrayInputStreamクラス。
byteArrayInputStream1 = new ByteArrayInputStream( bytes1 );
// 同じくもうひとつ。
byte[] bytes2 = new byte[]{ 4, 5, 6 };
byteArrayInputStream2 = new ByteArrayInputStream( bytes2 );
// このふたつを格納するVectorクラスを用意します。
Vector vector = new Vector();
vector.add( byteArrayInputStream1 );
vector.add( byteArrayInputStream2 );
// この2つを対象とするSequenceInputStreamクラスを用意します。
sequenceInputStream = new SequenceInputStream( vector.elements() );
while( true )
{
// 1バイト取得します。
int i = sequenceInputStream.read();
if( i == -1 )
{
// -1が返されてきたら終わりです。
break;
}
// 出力します。
System.out.println( "0x" + Integer.toHexString( i ) + " ( " + i + " )" );
}
// 0x1 ( 1 )
// 0x2 ( 2 )
// 0x3 ( 3 )
// 0x4 ( 4 )
// 0x5 ( 5 )
// 0x6 ( 6 )
// このように、2つのストリームから立て続けに
// 取得することができます。
}
catch( IOException e )
{
// 読み込みに失敗した際に、read()メソッドが
// IOException例外を投げます。
e.printStackTrace();
}
finally
{
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( sequenceInputStream != null )
{
sequenceInputStream.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( byteArrayInputStream2 != null )
{
byteArrayInputStream2.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( byteArrayInputStream1 != null )
{
byteArrayInputStream1.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
}
}
}




