我正在尝试将大于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中项目的设置。

09-30 17:59