2013-07-24 519 views
3

我想要做的是从Web服务器下载文件。当我追踪代码时,两位程序员使用ByteArrayOutputStream和FileOutputStream以不同的方式下载相同场景中的文件。这些都是从内存使用和性能角度看,ByteArrayOutputStream vs FileOutputStream

  • 案例1:使用ByteArrayOutputStream创建一个文件并下载。

  • 案例2:使用FileOutputStream暂时下创建的Web服务器文件并下载它,然后删除该文件。

PS:案例2文件大于案例1文件。

我可以在两种情况下使用ByteArrayOutputStream吗?第二种情况下有没有打算使用FileOutputStream?我想知道的是从表现和记忆的角度来看。提前致谢。

+7

'ByteArrayOutputStream'在内存中,'FileOutputStream'是一个文件。影响是显而易见的。 'ByteArrayOutputStream'更快,但考虑下载一个10Gb文件......这似乎在程序中打开了一个很好的安全漏洞 - 只是给它一个大文件。 –

+0

这一切都取决于您下载的文件的大小。 'ByteArrayOutputStream'适用于较小的文件。 – Santosh

+3

把它们进行比较是荒谬的。在磁盘I/O速度下,除了内存,总线速度,没有磁盘,另一个只使用少量内存和根据需要使用尽可能多的磁盘外,其他任何内容都只使用内存。 – EJP

回答

2

结合鲍里斯蜘蛛和彼得劳里的回答: ByteArrayOutputStream是在内存中,FileOutputStream是一个文件。影响是显而易见的。 ByteArrayOutputStream速度更快,但考虑下载一个10Gb文件......这似乎在程序中打开了一个很好的安全漏洞 - 只是给它一个大文件。 另外ByteArrayOutputStream被限制在2GB以下,因为它使用一个字节[]

相关问题