Stream 方式读文件 ( jdk1.8+ )

一、遍历

String file = "C:\\Users\\guanqin_li\\Desktop\\temp.txt";
try (Stream<String> stream = Files.lines(Paths.get(file), StandardCharsets.UTF_8)) {
    stream.forEach(line -> {
        //TODO 业务处理
        
    });
} catch (IOException e) {
    e.printStackTrace();
}

二、跳过 N 行开始遍历

String file = "C:\\Users\\guanqin_li\\Desktop\\temp.txt";
try (Stream<String> stream = Files.lines(Paths.get(file), StandardCharsets.UTF_8)) {
    stream.skip(10000).forEach(line -> {
        //TODO 业务处理
        
    });
} catch (IOException e) {
    e.printStackTrace();
}

三、记录遍历坐标

String file = "C:\\Users\\guanqin_li\\Desktop\\temp.txt";
try (Stream<String> stream = Files.lines(Paths.get(file), StandardCharsets.UTF_8)) {
    Iterator<String> iterator = stream.iterator();
    int index = 0;
    while (iterator.hasNext()) {
        index++;
        String line = iterator.next();
        //TODO 业务处理

    }
} catch (IOException e) {
    e.printStackTrace();
}

四、获取行数

String file = "C:\\Users\\guanqin_li\\Desktop\\temp.txt";
try (Stream<String> stream = Files.lines(Paths.get(file), StandardCharsets.UTF_8)) {
    long count = stream.count();
} catch (IOException e) {
    e.printStackTrace();
}

五、去重

String file = "C:\\Users\\guanqin_li\\Desktop\\temp.txt";
try (Stream<String> stream = Files.lines(Paths.get(file), StandardCharsets.UTF_8)) {
    stream.distinct().forEach(line -> {
    //TODO 业务处理

	});
} catch (IOException e) {
    e.printStackTrace();
}

六、查找

String file = "C:\\Users\\guanqin_li\\Desktop\\temp.txt";
try (Stream<String> stream = Files.lines(Paths.get(file), StandardCharsets.UTF_8)) {
    String line = stream.filter(str -> str.contains("关键词搜索测试"))
        .findFirst()
        .orElse(null);
	System.out.println(line);
} catch (IOException e) {
    e.printStackTrace();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值