java读取文件最后一行
时间: 2023-09-19 08:05:01 浏览: 85
Java 8之前的做法是使用`BufferedReader`逐行读取文件,直到读取到最后一行,如下所示:
```java
File file = new File("file.txt");
String lastLine = "";
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
lastLine = line;
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Last line: " + lastLine);
```
Java 8之后,可以使用`Files.lines()`方法,将文件的所有行读取为一个流,然后使用`reduce()`方法获取最后一行,如下所示:
```java
Path path = Paths.get("file.txt");
Optional<String> lastLine = Files.lines(path).reduce((a, b) -> b);
System.out.println("Last line: " + lastLine.orElse(""));
```
需要注意的是,使用`Files.lines()`方法读取大文件时,会将整个文件读入内存,可能会导致内存溢出,因此需要谨慎使用。
相关问题
java读取文件第一行
可以使用 Java 中的 BufferedReader 类读取文件的第一行。具体步骤如下:
1. 创建一个 FileReader 对象,用于读取文件:
```java
FileReader fileReader = new FileReader("文件路径");
```
2. 创建一个 BufferedReader 对象,将 FileReader 对象传入:
```java
BufferedReader bufferedReader = new BufferedReader(fileReader);
```
3. 使用 BufferedReader 的 readLine() 方法读取文件的第一行:
```java
String firstLine = bufferedReader.readLine();
```
完整的代码示例:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFirstLineFromFile {
public static void main(String[] args) {
try {
FileReader fileReader = new FileReader("文件路径");
BufferedReader bufferedReader = new BufferedReader(fileReader);
String firstLine = bufferedReader.readLine();
System.out.println("文件的第一行是:" + firstLine);
bufferedReader.close();
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
需要注意的是,读取文件时需要处理可能出现的 IOException 异常。
java读取文件上一行
可以使用Java中的BufferedReader和FileReader类来读取文件,并通过调用readLine()方法来读取文件的每一行。为了读取上一行,您可以使用mark()方法和reset()方法来在读取一行后返回到上一行。
以下是一个示例代码:
```
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
String currentLine, previousLine = null;
while ((currentLine = reader.readLine()) != null) {
if (previousLine != null) {
// 上一行的内容
System.out.println("Previous line: " + previousLine);
}
previousLine = currentLine;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在此示例中,我们使用了一个变量previousLine来存储上一行的内容,并在读取当前行时打印出上一行的内容。