java readline读到尾后如何从头读
时间: 2023-10-18 09:14:54 浏览: 54
在Java中,读取输入流的方法是通过BufferedReader类中的readLine()方法来实现的。当读取到输入流的末尾时,readLine()方法将返回null。
要从头开始重新读取输入流,可以使用mark()和reset()方法。mark()方法会标记当前输入流的位置,reset()方法会将输入流的位置重置为标记的位置。
以下是一个示例代码,演示如何使用mark()和reset()方法来从头读取输入流:
```
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// 读取输入流的第一行
String line = reader.readLine();
while (line != null) {
// 处理输入流的每一行
System.out.println(line);
// 标记当前位置
reader.mark(0);
// 读取下一行
line = reader.readLine();
// 如果已经读到输入流的末尾,重置输入流的位置为标记的位置
if (line == null) {
reader.reset();
line = reader.readLine();
}
}
```
在上面的代码中,我们首先读取输入流的第一行,然后进入一个while循环,处理
相关问题
java 文件读到尾后如何重头读取
在 Java 中,可以使用 java.io.BufferedReader 类来读取文件。该类提供了一个方法叫做 reset(),该方法可以将 BufferedReader 对象的指针重新指向文件的开头,从而实现重头读取文件的目的。
以下是一个示例代码:
```
try {
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
String line;
while ((line = br.readLine()) != null) {
// 处理文件内容
}
br.reset(); // 将指针重新指向文件开头
while ((line = br.readLine()) != null) {
// 重头处理文件内容
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
```
在上述代码中,首先使用 BufferedReader 类读取文件的内容,然后使用 reset() 方法将指针重新指向文件开头,最后再次读取文件的内容。请注意,reset() 方法只能在 mark() 方法之后才能调用,因此在使用 reset() 方法之前需要先调用 mark() 方法来设置标记位置。
以下是一个使用 mark() 方法和 reset() 方法的示例代码:
```
try {
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
String line;
br.mark(0); // 设置标记位置为文件开头
while ((line = br.readLine()) != null) {
// 处理文件内容
}
br.reset(); // 将指针重新指向标记位置(即文件开头)
while ((line = br.readLine()) != null) {
// 重头处理文件内容
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
```
在上述代码中,首先使用 mark() 方法设置标记位置为文件开头,然后使用 reset() 方法将指针重新指向标记位置,最后再次读取文件的内容。请注意,在 mark() 方法中传入的参数表示标记位置的最大字符数,如果文件的大小超过了该值,则标记位置将失效。
javareadline
Java Readline 是一个JNI包装器,用于将GNU readline或editline命令行库与Java代码进行交互。它提供了一系列函数,可以用来在命令行界面中读取用户输入的行。误以为readLine()是读取到没有数据时就返回null,实际上readLine()是一个阻塞函数,当没有数据读取时,它会一直阻塞在那里,直到有数据可读或者数据流异常或断开时才会返回null。在使用readLine()时需要注意读入的数据中是否包含换行符或回车符,没有数据时readLine()会阻塞,而数据流异常或断开时才会返回null。如果使用socket等数据流,最好避免使用readLine(),以免因为等待一个换行符而一直阻塞。