当前位置: 代码迷 >> J2SE >> BufferedReader类,该怎么处理
  详细解决方案

BufferedReader类,该怎么处理

热度:106   发布时间:2016-04-24 12:47:59.0
BufferedReader类
使用了这个类的函数readLine()读到文件结尾时

想继续用readLine()重新从文件头开始读,应该怎么把指针放到文件开始位置

------解决方案--------------------
用RandomAccessFile类随机读写可以吧
RandomAccessFile rf = new RandomAccessFile(File file, "r");
rf.seek(0);
------解决方案--------------------
要随机地读的话请用RandomAccessFile类,若你实在要用BufferedReader的话,那你就关闭一次
再打开一次好了,那就如一楼所说,闲得没事了……
可能楼主有了解C读文件,什么fseek之类的,你要的这些在RandomAccessFile类中有。
------解决方案--------------------
如果只是学习一下或者针对小文件的话:
Java code
    File file = new File("D:/test/test.txt");    BufferedReader reader = null;    int buffSize = 4096;    try {      reader = new BufferedReader(new FileReader(file), buffSize);      String line;      reader.mark(((int) file.length()) + buffSize);      while ((line = reader.readLine()) != null) {        System.out.println(line);      }      reader.reset();      System.out.println("=============================");      System.out.println(reader.readLine());    } catch (Exception ex) {      ex.printStackTrace();    } finally {      if (reader != null) {        try {          reader.close();        } catch (Exception ex) {        }      }    }
------解决方案--------------------
探讨

不太熟,先mark然后reset也许可以,毕竟不清楚是否实现了这个功能,但他要做了也很容易操作

mark
public void mark(int readAheadLimit)
throws IOException
Marks the present position in the stream. Subsequent calls to reset() will……

------解决方案--------------------
close之前的BufferReader 然后再new BufferReader 就回溯到文件头