我引用Apache提供的Commons FileUpload
本页描述了公用文件库的传统API。传统的API是一种方便的方法。然而,为了最终的性能,您可能更喜欢更快的流API。
我的问题
哪些具体的差异使Streaming API比traditional API更快?
发布于 2012-07-27 22:55:34
关键的区别在于您处理文件的方式,正如您自己在工厂类中注意到的那样。
流API在获取输入流时没有保存在磁盘中。最后,您将能够更快地处理该文件(占用临时内存).但是,这样做的目的是避免将二进制文件保存在磁盘中,除非您真的希望/需要这样做。
之后,您可以使用bufferedinputstream、字节数组或类似的方式将数据保存到磁盘中。
编辑:打开流时的处理程序( fileItemStreamElement.openStream() )是一个常见的InputStream实例。所以,您的“如果它是一个大文件怎么办”的答案是类似于这个Java中InputStream的内存问题
编辑:流API不应该保存到磁盘或内存中。它只提供一个可以读取的流,以便将文件复制到任何您想要的位置。这是一种避免拥有临时目录的方法,也避免分配足够的内存来保存文件。这应该更快,至少因为它不会被复制两次,一次从浏览器复制到磁盘/内存,然后再从磁盘/内存复制到保存它的地方。
发布于 2012-07-23 21:41:24
在“用户指南”中描述的传统API假定,文件项必须存储在某个地方,然后才能被用户实际访问。这种方法很方便,因为它允许很容易地访问项内容。另一方面,它是内存和时间消耗。
http://commons.apache.org/fileupload/streaming.html
发布于 2013-01-03 15:25:38
流API不应该保存到磁盘或内存中。它只提供一个可以读取的流,以便将文件复制到任何您想要的位置。这是一种避免拥有临时目录的方法,也避免分配足够的内存来保存文件。这应该更快,至少因为它不会被复制两次,一次从浏览器复制到磁盘/内存,然后再从磁盘/内存复制到保存它的地方。
https://stackoverflow.com/questions/11620432
复制相似问题