Java项目模块 - 使用InputStream / OutputStream或.tmpFile / byte []

时间:2009-11-16 15:09:13

标签: bytearray resources inputstream temporary-files outputstream

我发现自己在我的应用程序模块周围传递了InputStream / OutputStream对象。

我想知道是否更好 - 将内容保存到磁盘并在各种方法调用之间传递类似Resource的内容 - 使用byte [] array
而不是每次都要处理流。

在这些情况下你的方法是什么?
谢谢

修改
我有一个Controller,它接收用户上传的文件。我有一个实用程序模块,它提供了一些渲染文件的功能。

utilityMethod(InputStream is, OutputStream os)

InputStream中的文件是用户上传的文件。 os是与响应关联的流。我想知道是否最好使用实用程序方法将生成的文件保存在.tmp文件中并返回文件路径或byte []等,并让控制器直接处理outputStream。

2 个答案:

答案 0 :(得分:1)

我尽量保持RAM尽可能多(主要是因为性能原因和RAM很便宜)。所以我使用FileBackedBuffer来“保存”未知大小的数据。它有一个限制。当写入少于limit个字节时,它会将它们保存在内部缓冲区中。如果写入更多数据,我将创建实际文件。这个类有方法从中获取InputStreamOutputStream,因此使用代码不会受到细节的影响。

答案 1 :(得分:0)

答案实际上取决于问题的背景,我们不知道。

因此,想象最通用的情况,我会创建两个抽象。第一个抽象将InputStream/OutputStream作为参数,而另一个将采用byte[]. 获取流的那个可以读取数据并将其传递给byte []实现。所以现在你的用户可以根据他们的需求/舒适度使用流抽象和byte []抽象。