【发布时间】:2018-03-23 08:47:05
【问题描述】:
我有一段代码在找到开始记录时将文件“拆分”成一些块。
List<StringBuilder> list = new ArrayList<>();
StringBuilder jc = null;
try (BufferedReader br = Files.newBufferedReader(Paths.get("")) {
for (String line = br.readLine(); line != null; line = br.readLine()) {
if (line.startsWith("REQ00")) {
jc = new StringBuilder();
list.add(jc);
}
jc.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
有没有办法将这段代码“转换”成 Java 8 Stream 方式?
【问题讨论】:
-
首先,这段代码有很多错误,而且代码的行为似乎不像你解释的那样。你介意修理那些吗?例如,如果第一行不以 REQ00 开头,则此代码将具有 NPE,因为
jc.append(line) -
试试
try (Stream<String> stream = Files.lines(Paths.get(""))) { stream.filter(line->line.startsWith("REQ00")).collect(Collectors.toList()); } -
@pvpkiran 你说得对,这段代码战写得这么快就解释了我想要什么。放轻松;)
-
@HadiJ 我不想只收集“REQ00”记录,但我想从 REQ00 获取所有记录到另一个
-
第一行是否总是以 REQ00 开头?