разбить очень большой текстовый файл по максимуму строк
Я хочу разделить огромный файл, содержащий строки, на набор новых (меньших) файлов и попытался использовать nio2.
Я не хочу загружать весь файл в память, поэтому я попробовал это с BufferedReader.
Текстовые файлы меньшего размера должны быть ограничены количеством текстовых строк.
Решение работает, однако я хочу спросить, знает ли кто-нибудь решение с лучшей производительностью, используя usion java 8 (может быть, lamdas с stream () - api?) И nio2:
public void splitTextFiles(Path bigFile, int maxRows) throws IOException{
int i = 1;
try(BufferedReader reader = Files.newBufferedReader(bigFile)){
String line = null;
int lineNum = 1;
Path splitFile = Paths.get(i + "split.txt");
BufferedWriter writer = Files.newBufferedWriter(splitFile, StandardOpenOption.CREATE);
while ((line = reader.readLine()) != null) {
if(lineNum > maxRows){
writer.close();
lineNum = 1;
i++;
splitFile = Paths.get(i + "split.txt");
writer = Files.newBufferedWriter(splitFile, StandardOpenOption.CREATE);
}
writer.append(line);
writer.newLine();
lineNum++;
}
writer.close();
}
}