Java读完一行文件内容再使用readLine为什么就开始读取下一行内容了
时间: 2023-09-16 13:13:44 浏览: 118
Java中的BufferedReader类是一个缓冲输入流,它可以逐行读取文本数据。当我们使用`readLine()`方法从BufferedReader对象中读取一行数据时,它会将当前行的数据读取出来,并将指针移到下一行的开头,准备读取下一行数据。
因此,如果我们在读取完一行数据之后再次调用`readLine()`方法,它会从下一行的开头开始读取数据。如果我们需要重新从当前行的开头读取数据,可以使用`reset()`方法将指针移回到当前行的开头。
以下是一个例子,演示了如何读取一个文本文件,同时演示了如何将指针移回到当前行的开头:
```java
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
String line = null;
while ((line = reader.readLine()) != null) {
// 处理当前行的数据
System.out.println(line);
// 将指针移回到当前行的开头
reader.reset();
// 重新读取当前行的数据
line = reader.readLine();
}
```
需要注意的是,`reset()`方法只有在先前调用了`mark()`方法的情况下才有效。因此,在调用`reset()`方法之前,请确保已经调用了`mark()`方法。
相关问题
Java中遍历读完多个文件所有的行
在Java中,遍历读取多个文件的所有行可以通过使用`BufferedReader`和`FileReader`类来完成。以下是一个简单的示例代码,展示了如何实现这一功能:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileProcessor {
public static void main(String[] args) {
String[] filePaths = {"file1.txt", "file2.txt", "file3.txt"}; // 假设这是要读取的文件列表
for (String filePath : filePaths) {
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
// 处理每一行数据,例如打印出来
System.out.println(line);
}
} catch (IOException e) {
System.err.println("读取文件时发生错误: " + e.getMessage());
}
}
}
}
```
在这段代码中,我们首先定义了一个包含多个文件路径的字符串数组`filePaths`。然后,我们遍历这个数组,使用`BufferedReader`来逐行读取每个文件的内容。`readLine()`方法会返回文件的下一行,如果到达文件末尾,则返回`null`。在`try-with-resources`语句块中使用`BufferedReader`,可以确保文件在读取完毕后能够自动关闭。
java读取一首诗,按行填到String[]一维数组中
在Java中,你可以通过文件操作和字符串处理来实现这个功能。首先,你需要从文件中读取每一行内容,然后将每行添加到`String[]`数组中。这里是一个简单的示例:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadPoem {
public static void main(String[] args) {
String filePath = "path_to_your_poem.txt"; // 替换为你的诗歌文件路径
String[] poemLines = new String[10]; // 假设最多有10行诗
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
int lineCount = 0;
String line;
while ((line = reader.readLine()) != null) { // 遍历文件直到读完最后一行
if (lineCount < poemLines.length) { // 检查是否超过数组长度
poemLines[lineCount] = line; // 将读取的行存入数组
lineCount++;
}
}
// 现在poemLines数组里包含了整首诗的行
for (int i = 0; i < lineCount; i++) {
System.out.println("Line " + (i+1) + ": " + poemLines[i]);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在这个例子中,假设诗歌文件不大,可以直接读入内存。如果文件很大,你可能需要使用流式处理(如`Scanner`)或分块读取。
阅读全文