public static void main(String[] args) throws Exception { File file = new File("E:/a.txt"); // 100M long start = System.currentTimeMillis(); String lastLine = readLastLine(file, "gbk"); long delt = System.currentTimeMillis() - start; System.out.println(lastLine); System.out.println("讀取時間(毫秒):" + delt); file = new File("E:/b.txt");// 僅一行文字 start = System.currentTimeMillis(); lastLine = readLastLine(file, "gbk"); delt = System.currentTimeMillis() - start; System.out.println(lastLine); System.out.println("讀取時間(毫秒):" + delt); } public static String readLastLine(File file, String charset) throws IOException { if (!file.exists() || file.isDirectory() || !file.canRead()) { return null; } RandomAccessFile raf = null; try { raf = new RandomAccessFile(file, "r"); long len = raf.length(); if (len == 0L) { return ""; } else { long pos = len - 1; while (pos > 0) { pos--; raf.seek(pos); if (raf.readByte() == '\n') { break; } } if (pos == 0) { raf.seek(0); } byte[] bytes = new byte[(int) (len - pos)]; raf.read(bytes); if (charset == null) { return new String(bytes); } else { return new String(bytes, charset); } } } catch (FileNotFoundException e) { } finally { if (raf != null) { try { raf.close(); } catch (Exception e2) { } } } return null; }