1. 程式人生 > >java快速讀取文字檔案最後一行資料內容,文字檔案非常大

java快速讀取文字檔案最後一行資料內容,文字檔案非常大

http://www.iteye.com/problems/42748

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; }