我希望以InputStream的形式从远程存储中获取文件,而不将其保存到本地文件系统。远程存储为Java提供了一个方法,该方法接受OutputStream并将文件数据转储到其中。
void dump(OutputStream dest);
我想出的简单方法是创建一个临时文件,将数据转储到其中并以InputStream的形式重新打开它。但是这种方法创建了一个临时文件。在没有代理文件的情况下,是否有一种简单的方法可以实现相同的结果?
发布于 2015-09-16 02:34:10
有两种选择:
内存
如果所讨论的“文件”小到足以使其可行,则可以将数据读入ByteArrayOutputStream
,然后使用其toByteArray
方法构造要读取的ByteArrayInputStream
。
管系
为了避免在内存中存储超出需要的内容,可以使用PipedOutputStream
和PipedInputStream
。
PipedOutputStream
管道输出流可以连接到管道输入流以创建通信管道。管道输出流是管道的发送端。通常,数据由一个线程写入
PipedOutputStream
对象,而数据则由其他线程从连接的PipedInputStream
读取。
PipedInputStream
管道输入流应该连接到管道输出流;然后管道输入流提供写入管道输出流的任何数据字节。通常,数据由一个线程从PipedInputStream对象读取,数据由其他线程写入相应的PipedOutputStream。
您为API提供输出流,并从输入流中读取。
https://stackoverflow.com/questions/32606091
复制相似问题