Java實現從檔案最後一行開始讀
阿新 • • 發佈:2018-12-27
package comz; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class FromEndRF { public static void read(String filename) { read(filename, "GBK"); } public static void read(String filename, String charset) { RandomAccessFile rf = null; try { rf = new RandomAccessFile(filename, "r"); long len = rf.length(); long start = rf.getFilePointer(); long nextend = start + len - 1; String line; rf.seek(nextend); int c = -1; while (nextend > start) { c = rf.read(); if (c == '\n' || c == '\r') { line = rf.readLine(); if (line != null) { System.out.println(new String(line .getBytes("ISO-8859-1"), charset)); } else { System.out.println(line); } nextend--; } nextend--; rf.seek(nextend); if (nextend == 0) {// 當檔案指標退至檔案開始處,輸出第一行 line = rf.readLine(); System.out.println(new String(line.getBytes("ISO-8859-1"), charset)); } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (rf != null) rf.close(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String args[]) { read("d:\\2.txt", "gbk"); } }
借用了老紫竹的程式碼。