首页 > Java > 如何使用 Java 逐行读取大型文本文件?

如何使用 Java 逐行读取大型文本文件?

上一篇 下一篇

我需要使用 Java 逐行读取大约 5-6 GB 的大型文本文件。

如何快速完成此操作?

网友回答:

看看这个博客:

  • Java 逐行读取文件 – Java 教程

可以指定缓冲区大小,也可以
使用默认大小。
默认值对于大多数
用途来说足够大。

// Open the file
FileInputStream fstream = new FileInputStream("textfile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));

String strLine;

//Read File Line By Line
while ((strLine = br.readLine()) != null)   {
  // Print the content on the console
  System.out.println (strLine);
}

//Close the input stream
fstream.close();

网友回答:

一种常见的模式是使用

try (BufferedReader br = new BufferedReader(new FileReader(file))) {
    String line;
    while ((line = br.readLine()) != null) {
       // process the line.
    }
}

如果您假设没有字符编码,则可以更快地读取数据。例如 ASCII-7,但它不会有太大区别。您处理数据的过程很可能会花费更长的时间。

编辑:一种不太常见的模式,可避免泄漏的范围。line

try(BufferedReader br = new BufferedReader(new FileReader(file))) {
    for(String line; (line = br.readLine()) != null; ) {
        // process the line.
    }
    // line is not visible here.
}

更新:在Java 8中你可以做

try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
        stream.forEach(System.out::println);
}

注意:您必须将 Stream 放在资源尝试块中,以确保在其上调用#close方法,否则基础文件句柄永远不会关闭,直到 GC 稍后执行此操作。

网友回答:

Java 8 发布后(2014 年 <> 月),您将能够使用流:

try (Stream<String> lines = Files.lines(Paths.get(filename), Charset.defaultCharset())) {
  lines.forEachOrdered(line -> process(line));
}

打印文件中的所有行:

try (Stream<String> lines = Files.lines(file, Charset.defaultCharset())) {
  lines.forEachOrdered(System.out::println);
}

模板简介:该模板名称为【如何使用 Java 逐行读取大型文本文件?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 210次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-10
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
企业网站 html5 微信模板 微信公众平台 自适应 微信文章 单页式简历模板 微信素材 微信图片 响应式
您可能会喜欢的其他模板