我有一个包含太多信息的文件。像,
AA BB CC DD
WW FF SS FF
..
..
..
然后,
**** Input data ***
**
*
142.12123 Input taken for metrics
123.1222 Calculation point
.
.
.
**** Another Input ****
有没有办法只从
中挑选输入数据
直到
“另一个输入”
我尝试将文件读作Stream并过滤,
Stream<String> output = Files
.lines(Paths.get("a.out"))
Map<Boolean, List<String>> partition = output
.collect(Collectors.partitioningBy(s -> s.contains("Input data")));
但过滤器似乎只过滤了一行。我们可以过滤多行还是设置为结束?
答案 0 :(得分:1)
有一个java 9流api (0, 0)
/
(1,0)
/
(2, 0)
/ \
(2, 1) (2, 2)
/ /
(T,F)/ (1,2)
(1, 1) /
(0,2)
/
(0,1) This return(T,F) when it should return (T,T).
Because (0,1) won't call (0,0) since it is
already being processed(i.e visited) which in turn depends on (0,1),
creating a cycle. Although there exists a path
from (0,0) to atlantic
和takeWhile
,它将谓词作为参数。
dropWhile
您可以使用 java 8 并过滤:
来获得simillar结果请记住,它只能在有序流中运行,并且parallerism会破坏此代码。
请注意,我目前没有IDE,所以我不确定这个会编译,但是当你修复错误时它应该可以工作。
takeWhile(s->s.contains("Another input"))
.dropWhile(s->s.contains("Input data"))