Java BufferedReader 回到文本文件的顶部?

标签 java file file-io text-files bufferedinputstream

我目前在同一个文本文件上初始化了 2 个 BufferedReader。当我用第一个 BufferedReader 读完文本文件后,我使用第二个从顶部再通过文件。需要多次通过同一个文件。

我知道 reset(),但是需要在调用 mark()mark() 之前知道文件的大小,我认为我不应该打扰。

想法?包裹?库?代码?

谢谢 TJ

最佳答案

缓冲读取器旨在按顺序读取文件。您正在寻找的是 java.io.RandomAccessFile ,然后您可以使用 seek() 将您带到文件中所需的位置。

随机存取阅读器是这样实现的:

try{
     String fileName = "c:/myraffile.txt";
     File file = new File(fileName);
     RandomAccessFile raf = new RandomAccessFile(file, "rw");
     raf.readChar();
     raf.seek(0);
} catch (FileNotFoundException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
} catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
}

"rw" 是一个模式字符,它是 detailed here .

这样设置顺序存取读取器的原因是,它们可以实现其缓冲区,并且不能在其脚下进行更改。例如,提供给缓冲阅读器的文件阅读器只能由该缓冲阅读器操作。如果有另一个可能影响它的位置,您可能会出现不一致的操作,因为一个阅读器在文件阅读器中提升了它的位置,而另一个阅读器希望它保持不变,现在您使用另一个阅读器并且它位于未确定的位置。

关于Java BufferedReader 回到文本文件的顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/262618/

相关文章:

java - 您认为 Java 语言为什么选择将文件数据视为流而不是单个对象?

c - 从文件中读取一个数字并将其转换为 C 中的整数

c - Sedona 中的原生 C 方法 - 间接级别

c++ - 如何从文本文件中输出数据? (学生成绩单计划)

java - 从其他 Java 类调用方法

java - 返回方法并在方法之间传递变量?

java - 有人怎么会意外地在 Java 中启动一个类呢?

java - Spring MVC 应用无法识别 bootstrap CSS

css - 我如何从 firebug 获取 css 源文件路径?

c# - 将 DiskIndex 映射到卷标