Point lambdafications in java.io
Sam Pullara
spullara at gmail.com
Tue Jun 18 09:30:55 PDT 2013
I am very much in favor of a way to signal to the stream to relinquish resources so that you don't have to exhaust it to ensure that it is cleaned up. That said, without things like takeWhile() I'm not sure that there are many cases where you can close the stream unless you are in an exception state. What would be the semantics of something like this:
Stream stream = list.stream();
stream.forEach(o -> stream.close());
Sam
On Jun 18, 2013, at 9:05 AM, Brian Goetz <brian.goetz at oracle.com> wrote:
> The libraries team added the following methods to java.io and java.nio, with discussion on corelibs-dev:
>
> In java.io.BufferedReader:
> Stream<String> lines()
>
> In java.nio.Files, static methods for:
>
> CloseableStream<Path> list(Path dir) throws IOException;
>
> CloseableStream<Path> walk(Path start, int maxDepth, FileVisitOption... options) throws IOException
>
> CloseableStream<Path> walk(Path start, FileVisitOption... options) throws IOException
>
> CloseableStream<Path> find(Path start,
> int maxDepth,
> BiPredicate<Path, BasicFileAttributes> matcher,
> FileVisitOption... options)
> throws IOException
>
> CloseableStream<String> lines(Path path, Charset cs) throws IOException
>
>
> CloseableStream simply extends Stream and AutoCloseable, making it suitable for use with try-with-resources:
>
> public interface CloseableStream<T> extends Stream<T>, AutoCloseable {
> void close();
> }
>
> Should we consider moving AutoCloseable up to Stream and friends, and get rid of CloseableStream?
>
More information about the lambda-libs-spec-experts
mailing list