很简单的问题,假设我有一个大文件, 我的目的是每 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/