Java 将多个文件流式输出到zip文件中
Hie,我正在使用solr、angularjs、Jax rs和java以csv格式生成报告。输入流已经包含csv响应,因为我们在查询solr时指定了wt=csv。从每个输入流创建的csv大小可能为300mb。java层的代码如下:Java 将多个文件流式输出到zip文件中,java,angularjs,Java,Angularjs,Hie,我正在使用solr、angularjs、Jax rs和java以csv格式生成报告。输入流已经包含csv响应,因为我们在查询solr时指定了wt=csv。从每个输入流创建的csv大小可能为300mb。java层的代码如下: enter code here InputStream is1; InputStream is2; // for is1 let file is csv1 // for is2 let file is csv2
enter code here
InputStream is1;
InputStream is2;
// for is1 let file is csv1
// for is2 let file is csv2
// csvzip is the csv created form both two files
// now csvzip need to be downloaded through a popup
在内存中创建大文件和zipfile肯定不是一个好方法。
有什么方法可以解决这个问题吗?您将如何创建一个zip?使用ZipOutputStream,对吗?ZipOutputStream包装输出流。写入输出流的内容通常不会保留在内存中。例如,如果您写入HTTP响应输出流,它将通过网络进入浏览器,这正是您想要的。@JBNizet是的,谢谢。但当我们从输入流创建csv时,我们可以在服务器上创建文件夹并在那里创建多个csv,然后我们可以访问所有csv和zip,并流那个些内容。或者你可以建议其他方法为什么你会这么做?只需从CSV输入流读取字节,然后将它们写入zip输出流。从CSV输入流读取、写入文件、打开文件、从文件输入流读取和写入zip输出流,您会获得什么?您只会使事情变得更复杂、更慢。@JBNizet没有什么事情是存在一个while循环,它将创建多个输入流。我的zip文件应该包含一个单独的csv文件,属于每个输入stream@JBNizet谢谢,我明白你的意思了。你怎么做拉链?使用ZipOutputStream,对吗?ZipOutputStream包装输出流。写入输出流的内容通常不会保留在内存中。例如,如果您写入HTTP响应输出流,它将通过网络进入浏览器,这正是您想要的。@JBNizet是的,谢谢。但当我们从输入流创建csv时,我们可以在服务器上创建文件夹并在那里创建多个csv,然后我们可以访问所有csv和zip,并流那个些内容。或者你可以建议其他方法为什么你会这么做?只需从CSV输入流读取字节,然后将它们写入zip输出流。从CSV输入流读取、写入文件、打开文件、从文件输入流读取和写入zip输出流,您会获得什么?您只会使事情变得更复杂、更慢。@JBNizet没有什么事情是存在一个while循环,它将创建多个输入流。我的zip文件应该包含一个单独的csv文件,属于每个输入stream@JBNizet谢谢,我明白你的意思了