我目前BufferedReader
在同一文本文件上初始化了2 秒.当我用第一个文本文件读完文本文件时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"
是一个模式字符,在此详述.
这样设置顺序访问读取器的原因是它们可以实现它们的缓冲区,并且不能在它们的脚下改变它们.例如,提供给缓冲读取器的文件读取器应仅由该缓冲读取器操作.如果有另一个位置可能会影响它,你可能会有一个不一致的操作,因为一个阅读器提升了它在文件阅读器中的位置,而另一个想要它保持相同,现在你使用另一个阅读器,它是在一个未确定的位置.
BufferedReader
从顶部创建新内容的缺点是什么?我希望操作系统缓存文件,如果它足够小的话.
如果您担心性能问题,您是否证明它是瓶颈?我只做最简单的事情而不用担心它,直到你有特定的理由.我的意思是,你可以将整个内容读入内存,然后对结果进行两次传递,但是再一次比使用新的阅读器再次从头开始阅读更复杂.