在我的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()还是从流中读取?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)