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