私は次のファイルを読んでいます:
char [] buffer = new char[300];
FileInputStream istream = new FileInputStream(path);
InputStreamReader file = new InputStreamReader(istream);
size = file.read(buffer);
file.close();
数回試行した後、file.read(buffer)
読み取りはバッファーに割り当てられた文字数を正確に読み取ることがわかりました(この場合、ファイルにはるかに多くの文字が含まれている場合でも、300文字です)。
例外を生成せずに、常に可能な限り多くの読み取りを行うread()に依存できますか?
それとも、これは文書化されていない機能ですか?
読み取りメソッドの説明には次のように書かれています。
このリーダーから文字を読み取り、オフセット0から始まる文字配列bufに格納します。実際に読み取られた文字数を返します。リーダーの終わりに達した場合は-1を返します。
バッファ割り当ての問題については言及されていません。これは非常に重要であり、このように機能することは良いことです。これにより、必要に応じてバッファーのサイズを定義でき、推測したり、例外をコーディングしたりする必要がなくなります。実はそうですread(char[] buffer)
が、として動作しread(char[] buffer, int size)
ます。