Java:写入OutputStream,然后将其用作InputStream

3

我想从远程存储获取一个文件的InputStream,而不将其保存到本地文件系统。远程存储提供了一个Java API,其中有一个方法,它接受一个OutputStream并将文件数据倾倒进去。

void dump(OutputStream dest);

我想到的简单方法是创建一个临时文件,将数据倒入其中,然后重新打开它作为InputStream。但是这种方法会创建一个临时文件。有没有一种不需要代理文件就能实现相同结果的简单方法?
1个回答

6

两个选项:

内存

如果所涉及的“文件”足够小,可以将数据读入ByteArrayOutputStream,然后使用其toByteArray方法构造一个ByteArrayInputStream以进行读取。

管道

为避免在内存中存储过多内容,可以使用PipedOutputStreamPipedInputStream

PipedOutputStream

可以将管道输出流连接到管道输入流以创建通信管道。管道输出流是管道的发送端。通常情况下,一个线程向PipedOutputStream对象写入数据,另一个线程从连接的PipedInputStream中读取数据。

PipedInputStream

应将管道输入流连接到管道输出流;然后,管道输入流提供写入管道输出流的任何数据字节。通常情况下,一个线程从PipedInputStream对象读取数据,另一个线程向相应的PipedOutputStream中写入数据。

将输出流提供给API,然后从输入流中读取。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接