File to Byte[]
-
- Сообщения: 74
- Зарегистрирован: 27 янв 2014, 00:05
File to Byte[]
Если кто знает, то подскажите как перевести большой файл в массив байт что бы не было OOM. файл примерно 100 Мб.
Re: File to Byte[]
Need more information. Где будешь брать файл? что с массивом дальше делать собрался?
-
- Сообщения: 74
- Зарегистрирован: 27 янв 2014, 00:05
Re: File to Byte[]
Файл с SD. Массив нужно отправить на сервер.AliMan писал(а):Need more information. Где будешь брать файл? что с массивом дальше делать собрался?
Re: File to Byte[]
Артем Дегтев писал(а): Файл с SD. Массив нужно отправить на сервер.
«Life is too short to spend rewriting code»
-
- Сообщения: 74
- Зарегистрирован: 27 янв 2014, 00:05
Re: File to Byte[]
Эти способы переробывал ранее.... у меня файл 120 МБ, и эти все способы выдают ООМ.mdzht писал(а):Артем Дегтев писал(а): Файл с SD. Массив нужно отправить на сервер.
Re: File to Byte[]
Тогда твой подход в корне не верен. ты прикинь в памяти будет хранится 100мб !!! да и еще для преобразования память нужна будет. (Ну если надо то через FileInputStream fileInputStream = new FileInputStream(sourceFile); и его метод "read").Артем Дегтев писал(а):Если кто знает, то подскажите как перевести большой файл в массив байт что бы не было OOM. файл примерно 100 Мб.
А по нормальному файл нужно грузить как то так http://androidexample.com/Upload_File_T ... 3&aaid=106
Re: File to Byte[]
Android application has limited Heap Memory and which depend on devices. Currently most of the new devices has 64 but it could be more or less depend on Manufacturer. I have seen device come come with 128 MB heap Memory.Артем Дегтев писал(а):Эти способы переробывал ранее.... у меня файл 120 МБ, и эти все способы выдают ООМ.mdzht писал(а):Артем Дегтев писал(а): Файл с SD. Массив нужно отправить на сервер.
So what this really mean?
Its simply means that regardless of available physical memory your application is not allowed to grow more then allocated heap size.
From Android API level 11 you can request for additional memory by using manifest tag android:largeHeap="true" which will be double your heap size. That simply means if your devices has 64 you will get 128 and in case of 128 you will get 256. But this will not work for lower API version.
I am not exactly sure what is your requirement, but if you planning to send over HTTP then read file send data and read again. You can follow the same procedure for file IO also. Just to make sure not to use memory more then available heap size. Just to be extra cautious make sure you leave some room for application execution.
«Life is too short to spend rewriting code»