日期:2014-05-20  浏览次数:20777 次

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 就回溯到文件头