如何在 Java 中逐行讀取一個大型文字檔案

Hassan Saeed 2023年1月30日 2020年9月19日
  1. 在 Java 中 BufferedReader 逐行讀取檔案的方法
  2. 在 Java 中 Stream 逐行讀取檔案
  3. Java 中逐行讀取檔案的 Scanner 方法
如何在 Java 中逐行讀取一個大型文字檔案

本教程將討論在 Java 中逐行高效讀取大型文字檔案的方法。

在 Java 中讀取文字檔案的方法有很多。但是,本教程是專門針對讀取大型文字檔案的,我們將討論三種最有效的快速讀取大型文字檔案的方法。

在 Java 中 BufferedReader 逐行讀取檔案的方法

BufferedReaderJava 中的類從給定的字元輸入流中讀取文字,緩衝字元以提供字元、陣列和行的高效讀取。該方法為檔案大小相當大的輸入檔案提供了高效的逐行讀取。

下面的例子說明了如何使用 BufferedReader 來讀取一個 txt 檔案並逐行輸出其內容。

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String file = "my-file.txt";
        try(BufferedReader br = new BufferedReader(new FileReader(file))) 
        {
            String line;
            while ((line = br.readLine()) != null) {
            System.out.println(line);
            }
        }
        catch (IOException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

在 Java 中 Stream 逐行讀取檔案

Java 8 及以上版本的使用者還可以使用 Stream 逐行讀取大檔案。下面的例子說明了如何使用 Stream 來讀取一個 txt 檔案,並逐行輸出其內容。

import java.io.*;
import java.nio.file.*;
import java.util.stream.*;

public class Main {
    public static void main(String[] args) {
        String file = "my-file.txt";
        try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
            stream.forEach(System.out::println);
        }
        catch (IOException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

以上討論的兩種方法會逐行讀取輸入檔案,而不是將整個檔案讀到記憶體中。因此,如果我們有一個巨大的檔案,不能完全讀入記憶體,這兩種方法的效率是很高的。

但是,如果我們的記憶體足夠大,可以完全讀取輸入檔案,我們也可以嘗試下面的方法。

Java 中逐行讀取檔案的 Scanner 方法

Java 中的 Scanner 類是一個簡單的文字 Scanner,它可以使用正規表示式解析原始型別和字串。Scanner(File source) 將完整的檔案讀入記憶體,然後逐行處理。

下面的例子說明了如何使用 Scanner 讀取一個 txt 檔案並逐行輸出其內容。

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String [] args) throws IOException {
        String fileName = "my-file.txt";
        Scanner scan = new Scanner(new File(fileName));
        while(scan.hasNextLine()){
            String line = scan.nextLine();
            System.out.println(line);
        }
    }
}

我們討論了三種方法來讀取 Java 中的大文字檔案並逐行處理它。每種方法都有一些約束和優點,在決定在特定情況下使用哪種方法時,我們必須考慮這些約束和優點。

相關文章 - Java File