有一个txt文件 我向只读取最后3行的数据 怎么弄?最好给个例子。3Q.
seek()参数是距离读写开头的位置,还是文件开头的位置?
刚接触RandomAccessFile不是很了解,我要一行一行的读取怎么每一行的字节数不是固定的,seek怎么设置 还是用别的方法? 
还有比如说 我readLine从末尾读了1行 那么再用getFilePointer()获取读写位置就在倒数第二行了。

解决方案 »

  1.   

    LZ你结帖率太低了,所以没人回你。。
    尝试RandomAccessFile吧。它可以帮助你像c一样定位文件指针
      

  2.   


    /*
     * 打印一个给定的TXT文件的后20行
     */
    public static void readTxt() {
    Map dataMap = new HashMap();
    FileReader file;
    int num = 0;
    try {
    file = new FileReader("D:/data.txt");
    BufferedReader in = new BufferedReader(file);
    while (in.ready()) {
    // 读入每行数据,dataMap中始终只会保存最后读到的20条记录
    dataMap.put((num % 20), in.readLine());
    num++;
    }
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } if (num < 20) {
    // 文件中记录不超过20行
    for (int i = 0; i < num; ++i) {
    System.out.println(dataMap.get(i));
    }
    } else {
    int key = num % 20;
    for (int i = key; i < 20; ++i) {
    System.out.println(dataMap.get(i));
    }
    for (int i = 0; i < key; ++i) {
    System.out.println(dataMap.get(i));
    }
    }
    }楼主参考,这是打印倒数20行的一种方法