2013-07-24 522 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以下,因爲它使用一個字節[]

相關問題