前のセクションでは、ファイル バイト入力ストリームを構築する方法を学習しました。このセクションでは、入力ストリームを使用してバイトを読み取り、ストリームを閉じる方法を引き続き学習します。
入力ストリームの目的は、ソースからデータを読み取るためのチャネルを提供することです。プログラムは、このチャネルを通じてソースからデータを読み取ることができ、親クラスから継承された読み取りメソッドを呼び出してファイルを順番に読み取ることができます。ストリームが閉じられていない限り、read メソッドの各呼び出しは、ファイルの終わりまたはファイル バイト入力ストリームが閉じられるまで、ファイルの残りの内容を順番に読み取ります。
バイト入力ストリームの read メソッドは、ソース内のデータをバイト単位で読み取ります。
入力ストリームは、ソースから 1 バイトのデータを読み取るためにこのメソッドを呼び出します。このメソッドは、バイト値 (0 ~ 255 の整数) を返します。バイトが読み取られない場合は、-1 を返します。
入力ストリームは、このメソッドを呼び出して、ソースから b.length バイトをバイト配列 b に読み取ろうとし、実際に読み取られたバイト数を返します。ファイルの終わりに達した場合は、-1 が返されます。
入力ストリームはこのメソッドを呼び出して、ソースから len バイトをバイト配列 b に読み取ろうとし、実際に読み取られたバイト数を返します。ファイルの終わりに到達した場合は、-1 が返され、パラメータ off は、読み取りデータの格納を開始するバイト配列内の位置を指定します。
注: FileInputStream ストリームは、ストリームが閉じられていない限り、ソースの終わりまたはストリームが閉じられるまで、read メソッドを呼び出すたびにソース コンテンツの残りを順番に読み取ります。
入力ストリームはすべて、終了メソッドclose()を提供します。プログラムが終了すると、開いているストリームはすべて自動的に閉じられますが、プログラムがストリームの使用を終了した後は、開いているストリームを明示的に閉じることをお勧めします。開いているストリームが閉じられていない場合、別のプログラムはそれらのストリームが使用するリソースを操作できなくなる可能性があります。
例えば:
importjava.io.*;publicclassMain{publicstaticvoidmain(Stringargs[]){intn=-1;byte[]a=newbyte[100];try{Filef=newFile(Main.java);InputStreamin=newFileInputStream(f);while( (n=in.read(a,0,100))!=-1){Strings=newString(a,0,n);System.out.print(s);}in.close();}catch(IOExceptione) {System.out.println(FilereadError+e);}}}
注: 読み取りバイトを文字列に変換する場合、上記の例のように、実際の読み取りバイトを文字列に変換する必要があります。
Strings=newString(a,0,n);
次のように書くことはできません:
Strings=newString(a,0,100);