4

我从 Apache Commons Page 引用Commons FileUpload

本页介绍 commons fileupload 库的传统 API。传统的 API 是一种方便的方法。但是,为了获得最佳性能,您可能更喜欢更快的Streaming API。

我的问题

什么具体的区别Streaming API比 快traditional API

4

4 回答 4

5

关键区别在于您处理文件的方式,正如您在工厂类中所注意到的那样。

获取输入流时,流 API 未保存在磁盘中。最后,您将能够更快地处理文件(以临时内存为代价)......但我们的想法是避免将二进制文件保存在磁盘中,除非您真的想要/需要。

之后,您当然可以使用缓冲输入流、字节数组或类似方法将数据保存到磁盘。

编辑:打开流时的处理程序(fileItemStreamElement.openStream () )是一个常见的 InputStream 实例。因此,您的“如果它是一个大文件怎么办”的答案类似于Java 中 InputStream 的内存问题

编辑:流 API 不应保存到磁盘或保存在内存中。它只是提供了一个流,您可以从中读取文件以将文件复制到您想要的任何位置。这是一种避免临时目录并避免分配足够内存来保存文件的方法。这至少应该更快,因为它不会被复制两次,一次是从浏览器复制到磁盘/内存,然后再从磁盘/内存复制到您保存它的位置。

于 2012-07-27T22:55:34.577 回答
0

用户指南中描述的传统 API 假设文件项必须存储在某个地方,然后才能被用户实际访问。这种方法很方便,因为它允许轻松访问项目内容。另一方面,它是内存和耗时的。

http://commons.apache.org/fileupload/streaming.html

于 2012-07-23T21:41:24.270 回答
0

流式 API 不应保存到磁盘或保存在内存中。它只是提供了一个流,您可以从中读取文件以将文件复制到您想要的任何位置。这是一种避免临时目录并避免分配足够内存来保存文件的方法。这至少应该更快,因为它不会被复制两次,一次是从浏览器复制到磁盘/内存,然后再从磁盘/内存复制到您保存它的位置。

于 2013-01-03T15:25:38.573 回答
-1

流通常是指一种 API(如 Apache FileUpload 或 StAX),其中数据在应用程序运行时以串行方式传输和解析,通常是实时的,并且通常来自动态源,其内容事先并不精确。

传统模型指的是 API(如传统文件处理 API、DOM API),它们提供了有关数据的更多详细信息。

类似于 FileHandling API 传统方法假定文件项必须存储在某个地方,然后才能被用户实际访问。这种方法很方便,因为它允许轻松访问项目内容。另一方面,它是内存和耗时的。

Streaming API 将具有更小的内存占用和更小的处理器要求,并且在某些情况下可以具有更高的性能。

它适用于您正在使用的文档的“纸板管”视图的基础。

于 2012-07-31T10:08:51.463 回答