有时需要逐行读取文件为字符串。例如,通过将文件每一行读取为String
对象来调用方法。
可以使用不同的方式逐行读取文件,下面我们来学习常见的几种方法。
方法1: 使用BufferedReader逐行读取文件
可以使用java.io.BufferedReader
类中的readLine()
方法逐行读取文件到String
。到达文件末尾时,此方法返回null
。下面是一个简单的程序,显示了如何使用BufferedReader
逐行读取文件内容的示例程序。
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(
"D:/users/maxsu/myfile.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();
}
}
}
方法2: 使用Scanner逐行读取文件
可以使用Scanner
类打开文件,然后逐行读取其内容。下面是逐行读取文件的Scanner
类程序示例。
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("D:/users/maxsu/myfile.txt"));
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
方法3: 使用Files
逐行读取文件java.nio.file.Files
是一个包含各种有用方法的实用程序类。Fiels
类的readAllLines()
方法可用于将所有文件行读入字符串。
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("D:/users/maxsu/myfile.txt"));
for (String line : allLines) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
方法4: 使用RandomAccessFile逐行读取文件
可以使用RandomAccessFile
以读取模式打开文件,然后使用它的readLine()
方法逐行读取文件。
import java.io.IOException;
import java.io.RandomAccessFile;
public class ReadFileLineByLineUsingRandomAccessFile {
public static void main(String[] args) {
try {
RandomAccessFile file = new RandomAccessFile("D:/users/maxsu/myfile.txt", "r");
String str;
while ((str = file.readLine()) != null) {
System.out.println(str);
}
file.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}