读书人

BufferedReader类,该怎么处理

发布时间: 2012-03-17 19:06:27 作者: rapoo

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

读书人网 >J2SE开发

热点推荐