我正在尝试将大型3gp文件(>大于25mb)转换为字节数组,但它提供了outofmemory异常。我能够将小于25 mb的3gp文件转换为bytearray。
文件file1 =新文件(Environment.getExternalStorageDirectory()+“1.3gp”);
FileInputStream fis = null;
try {
fis = new FileInputStream(file1);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
while (fis.available() > 0) {
bos.write(fis.read());
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
byte[] bytes = bos.toByteArray();
File someFile = new File (Environment.getExternalStorageDirectory()+ "/output.txt");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(someFile);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.write(bytes);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
////
答案 0 :(得分:0)
将用于运行程序的虚拟机上的-Xmx
选项设置为更大的值,以便为其提供更多内存。
如果直接运行程序,可以将其作为命令行选项,或者如果从IDE运行,则可以作为IDE中项目的设置。