从文件Java 8读取行并在两者之间进行中断的最佳方法

时间:2019-02-12 21:11:35

标签: java file file-io java-8 java-stream

Files.lines().forEach()方法不允许break。读取Java 8中的代码行并在需要时中断的最佳方法是什么?

更新1:例外示例。

public class Main {
public static void main(String[] args) {

    try(IntStream s = IntStream.range(0, 5);){
    s.forEach(i -> validate(i));

    }catch(Exception ex){
    System.out.println("Hello World!");    
    }
}
static void validate(int s){

    if(s > 1){            
        //throw new Exception(); ?
    }
    System.out.println(s);
} }

1 个答案:

答案 0 :(得分:1)

使用java-9 takeWhile很容易,因此,当条件(s <1)失败时,它将丢弃流here的其余部分

  

当遇到与谓词不匹配的元素时,流的其余部分将被丢弃。

s.takeWhile(s -> s < 1).forEach(System.out::println);

通过使用Java-8尝试了一个示例,但是通过组合takeWhilepeek并不能像findFirst()那样高效,但是需要具有双重检查条件,这比这没有任何意义我更喜欢标准while循环

IntStream.range(0, 5).peek(i->{
         if(i<3) {
             System.out.println(i);
         }

     }).filter(j->j>=3).findFirst();

findFirst中验证谓词后,立即执行窥视操作,流就会中断