我正在尝试将大于25MB的大3GP文件转换为字节数组,但出现OutOfMemory异常。我可以将小于25MB的3GP文件转换为ByteArray。
file 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();
}
////
如何将大型3gp文件转换为bytearray。
给出一个恰当的例子或方法。
最佳答案
将用于运行程序的虚拟机上的-Xmx
选项设置为更大的值,以便为其提供更多的内存。
如果直接运行程序,可以将其作为命令行选项,如果从IDE运行,则可以将其作为IDE中项目的设置。