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(); } } } }