Java の大きなファイルの読み取り例外を解決する簡単な方法の共有
Java 開発プロセスでは、大きなファイルの読み取り操作を処理する必要がある場合があります。しかし、大きなファイルは大量のメモリ空間を占有するため、メモリオーバーフローなどの異常事態が頻繁に発生します。この記事では、簡単な回避策と具体的なコード例について説明します。
大きなファイルを処理する場合、通常、ファイル全体を一度にメモリに読み込むことを避けるために、セグメント読み取りを使用してファイルを複数の小さな部分に分割して処理します。大きなファイルを読み取り、その内容を出力する方法を示す簡単な例を次に示します。
import java.io.*; public class LargeFileReader { public static void main(String[] args) { // 文件路径 String filePath = "path/to/large/file.txt"; // 每次读取的字节数 int bufferSize = 1024; try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { // 用于存储每次读取的数据 char[] buffer = new char[bufferSize]; // 用于存储每次读取的有效字符数 int readChars; // 循环读取文件直到文件结束 while ((readChars = br.read(buffer, 0, bufferSize)) != -1) { // 输出当前读取的数据 System.out.print(new String(buffer, 0, readChars)); } } catch (IOException e) { e.printStackTrace(); } } }
上の例では、BufferedReader を使用して大きなファイルを 1 行ずつ読み取りました。まず、各読み取りのデータを保存するためのバッファ サイズ (ここでは 1024 バイト) を定義します。
次に、FileReader を使用してファイルを BufferedReader に読み取ります。次に、read メソッドを使用して、指定された数の文字をバッファーに読み取り、有効な文字数を readChars 変数に保存します。 readChars が -1 の場合、ファイルの終わりが読み取られたことを意味します。
最後に、現在読み取っているデータを System.out.print メソッドを通じて出力します。このようにして、ファイル全体を一度にメモリにロードせずに、大きなファイルの内容を徐々に読み取ることができるため、メモリ オーバーフローのリスクを回避できます。
実際のアプリケーションでは、特定のニーズに応じて、読み取ったデータに対して他の処理 (他のファイルへの書き込み、複雑なデータ計算の実行など) を実行する必要がある場合もあることに注意してください。
要約すると、セグメント読み取りを使用することで、Java の大きなファイルの読み取り例外の問題を解決でき、1 回の読み込みによるメモリ使用量も大幅に削減されます。この記事の簡単な方法が皆さんのお役に立ち、実際の開発で柔軟に活用できることを願っています。
参考資料:
以上が大きなファイルを読み取る Java の例外を解決する簡単な方法を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。