`
nwsuafer
  • 浏览: 12451 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
java快速读取文本文件最后一行数据内容,文本文件非常大 java快速读取文本文件最后一行数据内容,文本文件非常大
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;
}

Global site tag (gtag.js) - Google Analytics