我有一个拥有200MB数据的fileinputStream.我必须从输入流中检索字节.
我正在使用下面的代码将inputStream转换为字节数组.
private byte[] convertStreamToByteArray(inputStream inputStream) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { int i; while ((i = inputStream.read()) > 0) { bos.write(i); } } catch (IOException e) { e.printstacktrace(); } return bos.toByteArray();}
在将如此大的数据转换为字节数组时,我得到了OutOfMemory异常.
请告诉我将inputStream转换为字节数组的任何可能的解决方案.
解决方法:
为什么要将200MB文件保存在内存中?你打算用字节数组做什么?
如果要将其写入OutputStream,首先准备好OutputStream,然后一次读取一个块的inputStream,然后将块写入OutputStream.你永远不会在内存中存储超过块.
例如:
public static voID pipe(inputStream is, OutputStream os) throws IOException { int read = -1; byte[] buf = new byte[1024]; try { while( (read = is.read(buf)) != -1) { os.write(buf, 0, read); } } finally { is.close(); os.close(); } }
此代码将采用两个流并将一个管道连接到另一个.
总结以上是内存溢出为你收集整理的如何在没有OutOfMemory错误的情况下从FileInputStream获取字节数组全部内容,希望文章能够帮你解决如何在没有OutOfMemory错误的情况下从FileInputStream获取字节数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)