如何从Java 8 Streams获取Inputstream?

sel*_*man 7 java inputstream stream bufferedreader

我有一些来自不同文件的数据流。它的格式如下:

Stream<String> linesModifiedAndAppendedFromVariousFiles=getLines();
Run Code Online (Sandbox Code Playgroud)

但是,我需要将其提供给接受 InputStream 或 Reader 作为参数的库方法。

如何将此 Java 8 流馈送到 InputStream 或某种类型的 Reader 中?

PS:这不是关于将 java.util.streams.Stream 包装在 InputStream 周围。我正在寻找的是相反的方式。

VGR*_*VGR 3

您可以使用PipedReaderPipedWriter来完成此操作。

PipedReader reader = new PipedReader();

Runnable feeder = new Runnable() {
    @Override
    public void run() {
        try (PipedWriter writer = new PipedWriter(reader)) {
            linesModifiedAndAppendedFromVariousFiles.forEachOrdered(line -> {
                try {
                    writer.write(line);
                    writer.write('\n');
                } catch (IOException e) {
                    throw new UncheckedIOException(e);
                }
            });
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
};
new Thread(feeder).start();

someLibraryMethod.consumeReader(reader);
Run Code Online (Sandbox Code Playgroud)