栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java读取具有7000万行文本的大文本文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java读取具有7000万行文本的大文本文件

1)我确定速度没有差异,两者都在内部使用FileInputStream和缓冲

2)您可以进行测量并亲自查看

3)虽然没有性能优势,但我喜欢1.7方法

try (BufferedReader br = Files.newBufferedReader(Paths.get("test.txt"), StandardCharsets.UTF_8)) {    for (String line = null; (line = br.readLine()) != null;) {        //    }}

4)基于扫描仪的版本

    try (Scanner sc = new Scanner(new File("test.txt"), "UTF-8")) {        while (sc.hasNextLine()) { String line = sc.nextLine();        }        // note that Scanner suppresses exceptions        if (sc.ioException() != null) { throw sc.ioException();        }    }

5)这可能比其余的更快

try (SeekableByteChannel ch = Files.newByteChannel(Paths.get("test.txt"))) {    ByteBuffer bb = ByteBuffer.allocateDirect(1000);    for(;;) {        StringBuilder line = new StringBuilder();        int n = ch.read(bb);        // add chars to line        // ...    }}

它需要一些编码,但是由于,它确实可以更快

ByteBuffer.allocateDirect
。它允许操作系统从文件
ByteBuffer
直接读取字节,而无需复制

6)并行处理肯定会提高速度。创建一个大字节缓冲区,运行多个任务,将文件中的字节并行读取到该缓冲区中,当准备好找到行的第一行时,创建一个

String
,然后查找下一个…



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413863.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号