java - 如何使用 java 或 scala 处理大文件的最后一 block

标签 java algorithm scala java-8

很简单的问题,假设我有一个大文件, 我的目的是每 200 行读取一次并在不同的线程上进行一些处理。文件很长,所以最后一个线程不会恰好有 200 行。

我想了一些关于:(但没有得到如何解决剩余的最后一 block ......)

String[] chunk = new String[200];
        int count = 0;
        String line = null;
        while ((line = bufferedReader.readLine()) != null) {
            chunk[count % chunk.length] = line;
            count++;
            if (count % chunk.length == 0) {
                exec.execute(new Runnable() {

                    @Override
                    public void run() {
                        // TODO process what ever

                    }
                });
            }

        }

目的: 编写代码来处理不同线程上的每个行 block ,同时考虑到最后一个 block ,具有最佳性能/优化。

P.S - 不要先读取整个文件然后分块存储在内存中......我想在迭代期间这样做......

最佳答案

      Source
        .fromFile("fileName")
        .getLines
        .grouped(200)
        .foreach(doStuff)

关于java - 如何使用 java 或 scala 处理大文件的最后一 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47932418/

相关文章:

java - 在Java中的测试类中调用创建的类

javascript - Turf JS 交叉口问题

java - Java中的正则表达式匹配算法

scala - 是否可以在游戏功能测试中模拟数据库连接以及如何?

scala - Scala 中的 ISO 宏

java - 当我运行不同的线程 javafx 时游戏卡住

java - guice 辅助注入(inject) + 多绑定(bind) + 泛型

algorithm - 是否有一种算法可以就地乘方阵?

scala - 从 Cassandra 读取数据在 Flink 中处理

java - 将简单计算器改为算术表达式