在Java编程中,从文件中读取字符串是一个常见的需求,这可以通过多种方式实现,以下将详细介绍几种常用的方法,并给出相应的代码示例。

使用FileReader和BufferedReader
FileReader和BufferedReader是Java中用于读取文件的常用类,它们可以有效地读取文件中的文本内容。
创建FileReader和BufferedReader
你需要创建一个FileReader对象来读取文件,然后通过它创建一个BufferedReader对象来缓冲读取的数据。
import java.io.FileReader;
import java.io.BufferedReader;
public class ReadFileExample {
public static void main(String[] args) {
try {
FileReader fileReader = new FileReader("example.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader);
// 读取文件内容
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
// 关闭资源
bufferedReader.close();
fileReader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用Scanner
Scanner类是Java 5引入的,它提供了一个方便的方式来读取文件中的字符串。

创建Scanner对象
使用Scanner读取文件时,你需要指定文件路径,并调用其useDelimiter方法来设置分隔符。
import java.io.File;
import java.util.Scanner;
public class ReadFileWithScanner {
public static void main(String[] args) {
try {
File file = new File("example.txt");
Scanner scanner = new Scanner(file);
scanner.useDelimiter(System.getProperty("line.separator"));
// 读取文件内容
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
// 关闭资源
scanner.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用InputStreamReader和InputStream
对于非文本文件,或者需要以字节流的方式读取文件,可以使用InputStreamReader和InputStream。
创建InputStreamReader和InputStream
以下是如何使用InputStreamReader和InputStream来读取文件:

import java.io.FileInputStream;
import java.io.InputStreamReader;
public class ReadFileWithInputStream {
public static void main(String[] args) {
try {
FileInputStream fileInputStream = new FileInputStream("example.txt");
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
// 读取文件内容
int data;
while ((data = inputStreamReader.read()) != -1) {
System.out.print((char) data);
}
// 关闭资源
inputStreamReader.close();
fileInputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
注意事项
- 在读取文件时,始终记得关闭打开的资源,以避免资源泄漏。
- 使用
try-with-resources语句可以自动管理资源,避免手动关闭。 - 确保文件路径正确,并且文件可读。
通过以上方法,你可以轻松地从Java文件中读取字符串,每种方法都有其适用场景,选择最适合你需求的方法。


















