Java逐行读取文件:高效处理大文件的最佳实践

引言

本文是《如何使用Java逐行读取文件》系列文章的第1部分(共4部分)。在本部分中,你将学习到使用Java按行读取文件内容的不同方法。本文将详细介绍以下Java类及其方法:java.io.BufferedReaderjava.util.ScannerFiles.readAllLines()java.io.RandomAccessFile

使用BufferedReader逐行读取文件

你可以使用java.io.BufferedReaderreadLine()方法逐行读取文件内容并将其存储为字符串。当读取到文件末尾时,该方法将返回null

以下是一个使用BufferedReader逐行读取文件的示例程序:

使用BufferedReader逐行读取文件的Java代码

package com.scdev.readfileslinebyline;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ReadFileLineByLineUsingBufferedReader {

	public static void main(String[] args) {
		BufferedReader reader;

		try {
			reader = new BufferedReader(new FileReader("sample.txt"));
			String line = reader.readLine();

			while (line != null) {
				System.out.println(line);
				// read next line
				line = reader.readLine();
			}

			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

建议继续查阅 BufferedReader API 文档(Java SE 8)以深入学习。

使用Scanner逐行读取文件

你可以使用Scanner类来打开一个文件,然后逐行读取其内容。

以下是一个使用Scanner逐行读取文件的示例程序:

使用Scanner按行读取ReadFileLineByLineUsingScanner.java文件。

这是文章《如何使用Java逐行读取文件》的第2部分(共4部分)。

package com.scdev.readfileslinebyline;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadFileLineByLineUsingScanner {

	public static void main(String[] args) {
		try {
			Scanner scanner = new Scanner(new File("sample.txt"));

			while (scanner.hasNextLine()) {
				System.out.println(scanner.nextLine());
			}

			scanner.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

}

请继续学习Scanner API 文档(Java SE 8)来提升您的知识。

使用 Files 类逐行读取文件

java.nio.file.Files 是一个包含各种实用方法的工具类。其中的 readAllLines() 方法可以将文件的所有行读取到一个字符串列表中。

这是一个使用 Files 类逐行读取文件的示例程序。

使用 Files 类逐行读取文件的 Java 代码。
package com.scdev.readfileslinebyline;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

public class ReadFileLineByLineUsingFiles {

	public static void main(String[] args) {
		try {
			List<String> allLines = Files.readAllLines(Paths.get("sample.txt"));

			for (String line : allLines) {
				System.out.println(line);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

请继续阅读 Files API文档(Java SE 8),以深入学习。

使用RandomAccessFile逐行读取文件

你可以使用 RandomAccessFile 以读取模式打开文件,然后使用它的 readLine 方法逐行读取文件。

这是一个使用 RandomAccessFile 逐行读取文件的示例程序。

使用RandomAccessFile逐行读取文件(ReadFileLineByLineUsingRandomAccessFile.java)
package com.scdev.readfileslinebyline;

import java.io.IOException;
import java.io.RandomAccessFile;

public class ReadFileLineByLineUsingRandomAccessFile {

	public static void main(String[] args) {
		try {
			RandomAccessFile file = new RandomAccessFile("sample.txt", "r");
			String str;

			while ((str = file.readLine()) != null) {
				System.out.println(str);
			}

			file.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

继续学习使用 RandomAccessFile API 文档(Java SE 8)

结论

在本文中,您了解了使用 Java 逐行读取文件内容的不同方式。

继续通过更多的 Java 教程 来继续学习。

bannerAds