Ste*_*sky 6 java java-8 java-stream
在Java8,我该怎么形成Stream的String从扫描仪读取结果?
InputStream is = A.class.getResourceAsStream("data.txt");
Scanner scanner = new Scanner(new BufferedInputStream(is), "UTF-8");
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
Run Code Online (Sandbox Code Playgroud)
这就是将扫描仪变成我想要迭代使用的流forEach.
Bor*_*der 12
你这一切都错了,Scanner不需要:
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()) {
}
Run Code Online (Sandbox Code Playgroud)
如果你真的想使用Scanner它implements Iterator那么你可以这样做:
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);
}
Run Code Online (Sandbox Code Playgroud)
PS你也似乎没有关闭资源.永远关闭InputStream.
| 归档时间: |
|
| 查看次数: |
7182 次 |
| 最近记录: |