我目前有 2BufferedReader
s 在同一文本文件上初始化。当我读完第一个文本文件后BufferedReader
,我使用第二个从顶部再次遍历文件。需要多次遍历同一文件。
我知道关于reset()
,但需要先调用mark()
and mark()
需要知道文件的大小,我认为我不应该为此烦恼。
有想法吗?包裹?库?代码?
谢谢
泰杰
缓冲读取器旨在顺序读取文件。您正在寻找的是java.io.RandomAccessFile http://docs.oracle.com/javase/8/docs/api/java/io/RandomAccessFile.html,然后你可以使用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();
}
The "rw"
是一个模式字符,它是详细信息在这里 http://docs.oracle.com/javase/8/docs/api/java/io/RandomAccessFile.html#RandomAccessFile-java.io.File-java.lang.String-.
顺序存取读取器之所以如此设置,是因为它们可以实现其缓冲区,并且无法在其脚下进行更改。例如,提供给缓冲读取器的文件读取器只能由该缓冲读取器操作。如果存在可能影响它的另一个位置,则可能会出现不一致的操作,因为一个读取器在文件读取器中前进了其位置,而另一个读取器希望它保持不变,现在您使用另一个读取器并且它位于未确定的位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)