java的scanner如何處理大文件輸入

小樊
81
2024-09-24 01:20:07
欄目: 編程語言

Java的Scanner類本身不支持直接處理大文件輸入,因?yàn)樗鼤?huì)將整個(gè)輸入流加載到內(nèi)存中。對(duì)于大文件,這可能會(huì)導(dǎo)致內(nèi)存不足的問題。為了處理大文件輸入,你可以使用BufferedReader類,它可以逐行讀取文件內(nèi)容,而不會(huì)將整個(gè)文件加載到內(nèi)存中。

以下是一個(gè)使用BufferedReader和Scanner處理大文件輸入的示例:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class LargeFileInput {
    public static void main(String[] args) {
        File file = new File("large_file.txt");
        try (BufferedReader br = new BufferedReader(new FileReader(file));
             Scanner scanner = new Scanner(br)) {

            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                // 處理每一行數(shù)據(jù)
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在這個(gè)示例中,我們首先使用BufferedReader逐行讀取文件內(nèi)容,然后使用Scanner對(duì)每一行進(jìn)行處理。這樣,即使文件非常大,我們也可以避免內(nèi)存不足的問題。

0