我正在下载的视频文件大于给定的Android应用程序的存储空间.当它们在设备上时,MediaPlayer可以很好地处理它们,因此它们的整体大小不是问题.
问题是,如果它们超过相对较小的兆字节数(可以字节[]),那么在下载它们时,我将得到可怕的OutOfMemory异常.
我想要的解决方案是将传入的字节流直接写入SD卡,但是,我使用的是Apache Commons库,而我这样做的方式是尝试先读取整个视频,然后再交给我.
我的代码如下所示:
httpClIEnt clIEnt = new httpClIEnt(); PostMethod filePost = new PostMethod(URL_PATH); clIEnt.setConnectionTimeout(timeout); byte [] ret ; try{ if(nvpArray != null) filePost.setRequestbody(nvpArray); }catch(Exception e){ Log.d(TAG, "download Failed: " + e.toString()); } try{ responseCode = clIEnt.executeMethod(filePost); Log.d(TAG,"statusCode>>>" + responseCode); ret = filePost.getResponseBody();....
我很好奇另一种方法是一次获取一个字节流并将其写入磁盘.
解决方法:
您应该能够使用PostMethod对象的GetResponseBodyAsstream方法并将其流式传输到文件中.这是一个未经测试的示例.
inputStream inputStream = filePost.getResponseBodyAsstream();fileinputStream outputStream = new fileinputStream(destination);// Per your question the buffer is set to 1 byte, but you should be able to use// a larger buffer.byte[] buffer = new byte[1]; int bytesRead;while ((bytesRead = input.read(buffer)) != -1){ outputStream.write(buffer, 0, bytesRead);}outputStream.close();inputStream.close();
总结 以上是内存溢出为你收集整理的java-可以绕过HEAP从HTTP直接将字节流写入SDCard吗?全部内容,希望文章能够帮你解决java-可以绕过HEAP从HTTP直接将字节流写入SDCard吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)