Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java或scala处理大文件的最后一块_Java_Algorithm_Scala_Java 8 - Fatal编程技术网

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

如何使用java或scala处理大文件的最后一块,java,algorithm,scala,java-8,Java,Algorithm,Scala,Java 8,很简单的问题,假设我有一个大文件, 我的目的是每200行读一次,并在不同的线程上进行一些处理。该文件相当长,因此最后一个线程不会得到整整200行 我想了想:(但不知道如何解决剩下的最后一块……) PORPOSE: 编写代码来处理不同线程上的每一行块,并考虑最后一行块,以获得最佳性能/优化 注意-不要先读取整个文件并将其分块存储在内存中…我认为在迭代过程中这样做…这是一种常见情况,当您以相等的部分处理某个内容时,最后一部分将小于块大小,但大于0,不包括总行数%chunk\u size==0的情况。

很简单的问题,假设我有一个大文件, 我的目的是每200行读一次,并在不同的线程上进行一些处理。该文件相当长,因此最后一个线程不会得到整整200行

我想了想:(但不知道如何解决剩下的最后一块……)

PORPOSE: 编写代码来处理不同线程上的每一行块,并考虑最后一行块,以获得最佳性能/优化


注意-不要先读取整个文件并将其分块存储在内存中…我认为在迭代过程中这样做…

这是一种常见情况,当您以相等的部分处理某个内容时,最后一部分将小于块大小,但大于0,不包括
总行数%chunk\u size==0
的情况。您可以做的是在while循环结束后运行一个新的最终线程。在
chunk
数组中,您将有剩余的行。

Future(doStuff())来解决问题的线程部分。您好,正如您所建议的,解析到分组到内存中的整个文件好吗?我想对块进行迭代,这样每个块都会有未来……但是最后一块呢?@VitalyT,如果文件真的很大,将其分束处理可能是个好主意。这就是这个解决方案的实际用途
Source.getLines
返回一个
迭代器[String]
,该迭代器是惰性的,即在请求更多数据之前不会读取数据(IO缓冲除外,这对性能也有好处)。哇,很酷,我看到这是Scala,我试图在java8中找到解决方案,也许你们可以帮助,在java8中没有找到文件中的分组行…:(
      Source
        .fromFile("fileName")
        .getLines
        .grouped(200)
        .foreach(doStuff)
      Source
        .fromFile("fileName")
        .getLines
        .grouped(200)
        .foreach(doStuff)