java 从文件末尾开始读取文件内容

来源:互联网 发布:电脑网络重置命令 编辑:程序博客网 时间:2024/06/16 01:04
/**    * 从文件末尾开始读取文件,并逐行打印    * @param filename  file path    * @param charset character    */public static void readFileFromEnd(String filename, String charset) {    RandomAccessFile rf = null;    try {        rf = new RandomAccessFile(filename, "r");        long fileLength = rf.length();        long start = rf.getFilePointer();// 返回此文件中的当前偏移量        long readIndex = start + fileLength -1;        String line;        rf.seek(readIndex);// 设置偏移量为文件末尾        int c = -1;        while (readIndex > start) {            c = rf.read();            String readText = null;            if (c == '\n' || c == '\r') {                line = rf.readLine();                if (line != null) {                    readText = new String(line.getBytes("ISO-8859-1"), charset);                } else {                    System.out.println("read line : " + line);                }                readIndex--;            }            readIndex--;            rf.seek(readIndex);            if (readIndex == 0) {// 当文件指针退至文件开始处,输出第一行                readText = rf.readLine();            }            if (readText != null) {                System.out.println(readText);            }        }    } catch (FileNotFoundException e) {        e.printStackTrace();    } catch (IOException e) {        e.printStackTrace();    } finally {        try {            if (rf != null)                rf.close();        } catch (IOException e) {            e.printStackTrace();        }    }}