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

java-ByteArrayOutputStream.toByteArray()还是从流中读取?,第1张

概述在我的Android应用程序中,我将数据存储在ByteArrayOutputStream中(目前最大为1MB),我想将其传递给DataOutputStream.最明显的方法当然是调用:dataOS.write(byteArrayOS.toByteArray())但除此之外,还有一种更复杂(但可能更有效)的方式:ByteArrayInputStreamrdr=newByteArr

在我的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字节的块并将它们分别发送到DataOutputStream,而是立即发送了整个字节数组.

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

总结

以上是内存溢出为你收集整理的java-ByteArrayOutputStream.toByteArray()还是从流中读取?全部内容,希望文章能够帮你解决java-ByteArrayOutputStream.toByteArray()还是从流中读取?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1087665.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存