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

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

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

------解决方案--------------------
Java code

/*
     * 打印一个给定的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));
            }
        }
    }