gpt4 book ai didi

java - ByteArrayOutputStream.toByteArray() 还是从流中读取?

转载 作者:太空宇宙 更新时间:2023-11-03 13:26:54 26 4
gpt4 key购买 nike

在我的 Android 应用程序中,我将数据存储在 ByteArrayOutputStream 中(目前最大约为 1 MB),我想将其传递给 DataOutputStream

最明显的方法当然是调用:

dataOS.write(byteArrayOS.toByteArray())

但是还有一种更复杂(但可能更有效)的方法:

ByteArrayInputStream rdr = new ByteArrayInputStream(byteArrayOS.toByteArray());
int read;
byte[] buffer = new byte[1024];
while ((read = rdr.read(buffer)) > 0){
dataOS.write(buffer,0,read);
}

将来存储在 ByteArrayOutputStream 中的数据量可能会增长。这两者哪个效率更高?一次写入大量数据还是顺序写入?

更新:

DataOutputStream 用于通过网络写入(它是通过 UrlConnection.getOutputStream() 创建的)。

最佳答案

第一个更有效,因为它不是创建 N 个 1024 字节的 block 并将它们分别发送到 DataOutputStream,而是一次发送整个字节数组。

无论如何,您已经在内存中拥有了整个字节数组。有用的是从不从内存中字节数组(如文件或套接字输入流)读取的流中以 block 的形式读取和写入,因为这样可以避免将整个字节数组放在内存中。

关于java - ByteArrayOutputStream.toByteArray() 还是从流中读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18297694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com