在Java中读取txt文件内容可以通过多种方式实现,以下是一些常用的方法:

使用FileReader和BufferedReader
FileReader和BufferedReader是Java中读取文本文件的常用类,以下是使用这两个类读取txt文件内容的步骤:
- 创建
File对象,指定要读取的文件路径。 - 创建
FileReader对象,传入File对象。 - 创建
BufferedReader对象,传入FileReader对象。 - 使用
BufferedReader的readLine()方法逐行读取文件内容。 - 读取完成后,关闭
BufferedReader和FileReader。
以下是一个示例代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadTxtFile {
public static void main(String[] args) {
File file = new File("example.txt");
try (FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader)) {
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用Scanner
Scanner类也可以用来读取文本文件,但通常用于读取简单的文件格式,如CSV或TSV。
- 创建
File对象,指定要读取的文件路径。 - 创建
Scanner对象,传入File对象。 - 使用
Scanner的nextLine()或next()方法逐行或逐个读取文件内容。 - 读取完成后,关闭
Scanner。
以下是一个示例代码:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ReadTxtFileWithScanner {
public static void main(String[] args) {
File file = new File("example.txt");
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
使用InputStreamReader和InputStream
如果你需要处理字节流,可以使用InputStreamReader和InputStream。
- 创建
File对象,指定要读取的文件路径。 - 创建
InputStream对象,使用FileInputStream。 - 创建
InputStreamReader对象,传入InputStream对象。 - 创建
BufferedReader对象,传入InputStreamReader对象。 - 使用
BufferedReader的readLine()方法逐行读取文件内容。 - 读取完成后,关闭
BufferedReader、InputStreamReader和InputStream。
以下是一个示例代码:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class ReadTxtFileWithInputStream {
public static void main(String[] args) {
File file = new File("example.txt");
try (FileInputStream fileInputStream = new FileInputStream(file);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) {
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
| 方法 | 类 | 优点 | 缺点 |
|---|---|---|---|
FileReader和BufferedReader |
FileReader、BufferedReader |
适用于大多数文本文件,易于使用 | 读取速度较慢 |
Scanner |
Scanner |
简单易用,适用于简单的文件格式 | 功能有限,不适合复杂文件 |
InputStreamReader和InputStream |
InputStreamReader、InputStream |
适用于字节流处理 | 代码复杂,不易于使用 |
FAQs
Q1:如何处理读取文件时出现的异常?
A1:在读取文件时,可能会遇到IOException异常,为了处理这些异常,可以使用trycatch语句捕获异常,并在catch块中处理异常。

try {
// 读取文件的代码
} catch (IOException e) {
e.printStackTrace();
// 处理异常的代码
}
Q2:如何读取大文件而不占用太多内存?
A2:为了读取大文件而不占用太多内存,可以使用BufferedReader的readLine()方法逐行读取文件内容,这样可以避免一次性将整个文件内容加载到内存中。
try (BufferedReader bufferedReader = new BufferedReader(new FileReader("largefile.txt"))) {
String line;
while ((line = bufferedReader.readLine()) != null) {
// 处理每一行
}
}
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/213140.html