1. 程式人生 > >java 從檔案末尾開始讀取檔案內容

java 從檔案末尾開始讀取檔案內容

/**
    * 從檔案末尾開始讀取檔案,並逐行列印
    * @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(); } } }