FileInputStream オブジェクトを作成することにより、ファイルが読み取り用に開かれます。
ファイルが存在しない場合、FileInputStream(String filename) コンストラクターは FileNotFoundException をスローします。
FileNotFoundException は IOException のサブクラスです。
ファイルを読み取るには、バイトを読み取り、整数値を返す read() メソッドを使用します。
read() は、ファイルの終わりに達すると -1 を返し、エラーが発生すると IOException をスローします。
使用後は、システム リソースを解放するために close() メソッドを使用してファイルを閉じる必要があります。
ファイルを閉じないとメモリ リークが発生する可能性があります。
サンプル プログラムでは、read() を使用してファイルの内容を表示し、try/catch ブロックを使用して I/O エラーを処理します。
注: Java では、プログラムが使用しなくなったメモリ リソースを解放せず、これらのリソースが不必要に占有されたままになると、メモリ リークが発生します。この言語には、参照されていないオブジェクトに対する自動ガベージ コレクションがありますが、このコレクションはファイルやネットワーク接続などの外部リソースを直接処理しません。ファイルを閉じないと、システム リソースがビジー状態のままになり、パフォーマンスが低下し、エラーや障害が発生します (たとえば、別のファイルを開こうとしたとき)。
前の例では、ファイルを読み取るための try ブロックの後にフローを閉じます。
Java では、finally ブロック内で close() を呼び出すという代替アプローチが可能です。
finally ブロックを使用すると、try ブロックがどのように終了したかに関係なく、ファイルは閉じられます。
このアプローチでは、例外が発生した場合でもファイルが確実に閉じられます。
try ブロックはファイルにアクセスし、最終的にはファイルを閉じるためにのみ使用されます。
finally ブロックを使用する利点は、非 I/O 例外が発生した場合でもファイルを確実に閉じることができることです。
小規模なプログラムでは重要ではありませんが、大規模なプログラムでは問題を回避するためにこのアプローチは不可欠です。
finally を使用すると、予期しない例外が発生した場合に、閉じられていないファイルを処理する手間を省くことができます。
ファイルのオープンとファイル アクセスを 1 つの try ブロックにカプセル化し、finally を使用してそれを閉じることがベスト プラクティスです。
このアプローチにより、コードが簡素化され、リソースが確実に解放されます。
fin は null に初期化され、finally ブロックでは、fin が null でない場合にのみファイルが閉じられます。
これにより、ファイルを開くときに例外が発生した場合に close() が呼び出されなくなります。
FileNotFoundException は IOException のサブクラスであるため、try/catch シーケンスを簡素化できます。
IOException のみをキャッチすることで、FileNotFoundException を個別にキャッチする必要がなくなります。
この場合、標準例外メッセージでエラーが説明されます。
...
} catch(IOException exc) {
System.out.println("I/O エラー: " exc);
最後に {
...
以上がファイル内にエントリを生成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。