且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在Java中将扫描仪字符串转换为Stream?

更新时间:2021-12-07 22:14:23

你这一切都错了,没有扫描仪是必需的:

You are going about this all wrong, no Scanner is required:

try (final InputStream is = A.class.getResourceAsStream("data.txt");
        final Reader r = new InputStreamReader(is, StandardCharsets.UTF_8);
        final BufferedReader br = new BufferedReader(r);
        final Stream<String> lines = br.lines()) {

}

如果你真的想要使用扫描仪然后它实现Iterator 所以你可以这样做:

If you really want to use a Scanner then it implements Iterator so you can just do:

public Stream<String> streamScanner(final Scanner scanner) {
    final Spliterator<String> splt = Spliterators.spliterator(scanner, Long.MAX_VALUE, Spliterator.ORDERED | Spliterator.NONNULL);
    return StreamSupport.stream(splt, false)
            .onClose(scanner::close);
}

P.S。你似乎也没有关闭资源。 始终关闭 InputStream

P.S. you also don't seem to be closing resources. always close an InputStream.