我从 Apache Commons Page 引用Commons FileUpload
本页介绍 commons fileupload 库的传统 API。传统的 API 是一种方便的方法。但是,为了获得最佳性能,您可能更喜欢更快的Streaming API。
我的问题
什么具体的区别Streaming API比 快traditional API?
我从 Apache Commons Page 引用Commons FileUpload
本页介绍 commons fileupload 库的传统 API。传统的 API 是一种方便的方法。但是,为了获得最佳性能,您可能更喜欢更快的Streaming API。
我的问题
什么具体的区别Streaming API比 快traditional API?
关键区别在于您处理文件的方式,正如您在工厂类中所注意到的那样。
获取输入流时,流 API 未保存在磁盘中。最后,您将能够更快地处理文件(以临时内存为代价)......但我们的想法是避免将二进制文件保存在磁盘中,除非您真的想要/需要。
之后,您当然可以使用缓冲输入流、字节数组或类似方法将数据保存到磁盘。
编辑:打开流时的处理程序(fileItemStreamElement.openStream () )是一个常见的 InputStream 实例。因此,您的“如果它是一个大文件怎么办”的答案类似于Java 中 InputStream 的内存问题
编辑:流 API 不应保存到磁盘或保存在内存中。它只是提供了一个流,您可以从中读取文件以将文件复制到您想要的任何位置。这是一种避免临时目录并避免分配足够内存来保存文件的方法。这至少应该更快,因为它不会被复制两次,一次是从浏览器复制到磁盘/内存,然后再从磁盘/内存复制到您保存它的位置。
用户指南中描述的传统 API 假设文件项必须存储在某个地方,然后才能被用户实际访问。这种方法很方便,因为它允许轻松访问项目内容。另一方面,它是内存和耗时的。
流式 API 不应保存到磁盘或保存在内存中。它只是提供了一个流,您可以从中读取文件以将文件复制到您想要的任何位置。这是一种避免临时目录并避免分配足够内存来保存文件的方法。这至少应该更快,因为它不会被复制两次,一次是从浏览器复制到磁盘/内存,然后再从磁盘/内存复制到您保存它的位置。
流通常是指一种 API(如 Apache FileUpload 或 StAX),其中数据在应用程序运行时以串行方式传输和解析,通常是实时的,并且通常来自动态源,其内容事先并不精确。
传统模型指的是 API(如传统文件处理 API、DOM API),它们提供了有关数据的更多详细信息。
类似于 FileHandling API 传统方法假定文件项必须存储在某个地方,然后才能被用户实际访问。这种方法很方便,因为它允许轻松访问项目内容。另一方面,它是内存和耗时的。
Streaming API 将具有更小的内存占用和更小的处理器要求,并且在某些情况下可以具有更高的性能。
它适用于您正在使用的文档的“纸板管”视图的基础。