话不多说,直接上代码
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author huangyl
* @since 2.1.0 2019-05-16 15:24
*/
public class FilesUtil {
/**
* 分页读取文件并反序列化对象
*
* @param fileName 文件全名
* @param offset 下标
* @param limit 长度
* @param function 反序列化方法
* @return 对象列表
* @throws Exception io异常
*/
private <T> List<T> readListPage(String fileName, Integer offset, Integer limit, Function<String, T> function)
throws Exception {
Path path = Paths.get(fileName);
//读取文件
Stream<String> lines = Files.lines(path);
//流式操作,分片,构建对象
return lines.skip(offset)
.limit(limit)
.map(function)
.collect(Collectors.toList());
}
}