当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《JavaBufferedReader回到文本文件的顶部?》经验,为你挑选了2个好方法。

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

我知道reset(),但它需要先调用,mark()mark()需要知道文件的大小,我不认为我应该打扰.

想法?包?库?码?

谢谢TJ



1> Ryan P..:

缓冲读取器用于按顺序读取文件.您正在寻找的是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"是一个模式字符,在此详述.

这样设置顺序访问读取器的原因是它们可以实现它们的缓冲区,并且不能在它们的脚下改变它们.例如,提供给缓冲读取器的文件读取器应仅由该缓冲读取器操作.如果有另一个位置可能会影响它,你可能会有一个不一致的操作,因为一个阅读器提升了它在文件阅读器中的位置,而另一个想要它保持相同,现在你使用另一个阅读器,它是在一个未确定的位置.



2> Jon Skeet..:

BufferedReader从顶部创建新内容的缺点是什么?我希望操作系统缓存文件,如果它足够小的话.

如果您担心性能问题,您是否证明它是瓶颈?我只做最简单的事情而不用担心它,直到你有特定的理由.我的意思是,你可以将整个内容读入内存,然后对结果进行两次传递,但是再一次比使用新的阅读器再次从头开始阅读更复杂.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有