如何将多个 InputStream 直接包装成一个流,不操作文件?
现有一个项目,是基于云平台的开发,应用程序不能在服务器创建文件,因为不具备权限、且具体响应的服务器IP是未知的。
问题如下:
根据多个文件ID,可从文件服务器获取多个 InputStream 供用户下载,但是用户需要多次保存。
现需要将这多个 InputStream 直接包装成一个流(即:不能在服务器上创建真实的文件和文件夹),使用户只需要保存一次。
?InputStream
包装成一个流
不操作文件
多个?InputStream
云平台
------解决方案--------------------
我还是有点不清楚,你是让用户上传多个文件?还是从服务器下载?
------解决方案--------------------
一个保存操作,用一个类,处理多个流也是可以的啊,楼主在疑问什么呢?
得到两个流,分别处理,保存在客户端两个
InputStream in1 = ...;
InputStream in2 = ...;
byte[] buf1 = new byte[2048];
byte[] buf2 = new byte[2048];
int len1 = in1.read(buf1);
int len2 = in2.read(buf2);
OutputStream o1 = new FileOutputStream("d://copytest1.txt");
OutputStream o2 = new FileOutputStream("d://copytest2.txt");
o1.write(buf1,0,len1);
o2.write(buf2,0,len2);
in1.close();
in2.close();
o1.close();
o2.close();
应该是下载方式的问题吧?用什么实现在下载?
------解决方案--------------------就用ZipOutputStream,里面套一个字节数组流生成在内存中以便下载,ByteArrayOutputStream bos=new ByteArrayOutputStream();ZipOutputStream zos=new ZipOutputStream(bos)什么文件服务器ip,文件路径啊。你只要从你云端获得的这些流里面循环读取,一个流就putNextEntry(String name);//文件名自订吧。然后就读取这个inputStream进行write到这个zos中。最后在用这个bos转换成ByteArrayInputStream来提供下载不就行了