问题描述
- BufferedReader读取文件以后,怎么将文件指针移到文件开头
-
代码附上:
public class BufferedTest {
public static void main(String[] args) throws IOException
{
BufferedReader bReader = new BufferedReader(
new InputStreamReader(new FileInputStream("countBrowser/part-r-00000")));String msg = null; while((msg = bReader.readLine()) != null) { System.out.println(msg); } while((msg = bReader.readLine()) != null) { System.out.println(msg); } }
}
文件的内容只是显示了一次,应该是使用bReader读完以后,文件指针移到了文件的末尾,再读取就读取不出来了,但是怎么移到文件的开头呢?求教大家了
解决方案
用mark和reset的话,也可以重新回到文件首部。mark是在当前位置标记一下,然后reset回到最后一次标记的位置。那么缓存区的内容就可以重复使用了。
示例代码:
try {
File file = new File("D:/Test.java");
BufferedReader reader = new BufferedReader(new FileReader(file));
String content=reader.readLine();
reader.mark((int)file.length());
while(content!=null){
System.out.println(content);
content=reader.readLine();
}
reader.reset();
content=reader.readLine();
while(content!=null){
System.out.println(content);
content=reader.readLine();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
解决方案二:
让bReader重新执行文件。就是再执行一遍。
bReader = new BufferedReader(
new InputStreamReader(new FileInputStream("countBrowser/part-r-00000")));
解决方案三:
reader.mark((int)file.length()); 这个参数有限制,还是用文件长度保险些。。。
解决方案四:
reader.mark((int)file.length()); 这个参数有限制,还是用文件长度保险些。。。
mark()的这个参数,我猜应该是这样的吧,例如:
file总共有10行,然后mark(3);
再reset();
然后读取到的应该是从**文件的开头到第三行**
时间: 2024-11-08 22:32:59