Добавление большого текстового файла в папку ресурсов - PullRequest
3 голосов
/ 13 декабря 2010

Я занимаюсь разработкой приложения для Android 2.2.

Я хочу добавить несколько больших текстовых файлов (4,5 МБ или более) в проект Android.

Сначала я не знаю,Можно добавить такие большие файлы в папку активов.Но если я могу, можно ли их сжать?

Как мне сжать файлы?и распаковать?

Есть ли другой лучший способ добавить большие текстовые файлы в проект Android?

Спасибо.

Ответы [ 5 ]

3 голосов
/ 13 декабря 2010

Файлы размером более 1 МБ, помещенные в папку ресурсов, не будут читаться из вашего приложения (это приведет к исключению). Это происходит потому, что они сжимаются во время процесса сборки, и поэтому телефону требуются значительные ресурсы для их распаковки, когда они находятся на телефоне.

Я полагаю, что вы можете поместить их в необработанную папку, где они не будут сжаты, или использовать расширение, которое, как предполагает AAPT, уже сжато (см. здесь )

Тем не менее, нехорошо иметь несжатый текстовый файл размером 4,5 МБ, сидящий в APK, это потраченное впустую пространство, которое можно обрабатывать лучше. Попробуйте вместо этого подумать о загрузке данных при первом использовании или разбить файл на куски, как предлагалось ранее, чтобы AAPT мог сжать их.

2 голосов
/ 14 сентября 2011

Другой подход заключается в том, что вы должны скопировать свой файл на SD-карту во время первого запуска, используя IOUtils. Здесь также будьте осторожны, потому что, если вы будете копировать каждый байт, тогда будет занято больше ресурсов.

Это работает для меня, мне нужно было поместить большой ZIP-файл размером 30 МБ в папку «Ресурсы» из-за требований клиента.

1 голос
/ 13 декабря 2010

Можно, но иногда это дает проблемы. Вам не нужно сжимать его, потому что сам пакет сжимается (.APK), фактически, все, что вы храните в папке assets, при его чтении распаковывается. Что касается размера файла, вы можете вырезать его и поместить меньшие части файла в папку ресурсов.

0 голосов
/ 27 апреля 2011

Вам необходимо выполнить фрагментацию для этого текстового файла размером 4,5 МБ. Где вам нужно разделить текстовый файл на пять файлов с максимальным размером 1 МБ. Тогда вам снова нужно присоединиться к ним так:

        OutputStream databaseOutputStream = new FileOutputStream(outFileName);
        InputStream databaseInputStream;

        byte[] buffer = new byte[1024];
        int length;

        databaseInputStream = myContext.getResources().openRawResource(
                R.raw.outfileaaa);
        while ((length = databaseInputStream.read(buffer)) > 0) {
            databaseOutputStream.write(buffer);
        }
        databaseInputStream.close();


        databaseInputStream = myContext.getResources().openRawResource(
                R.raw.outfileaba);
        while ((length = databaseInputStream.read(buffer)) > 0) {
            databaseOutputStream.write(buffer);
        }
        databaseInputStream.close();
        databaseOutputStream.flush();
        databaseOutputStream.close();
0 голосов
/ 13 декабря 2010

Я считаю, что каталог ресурсов (кроме raw) уже сжат.Также Android Market скоро / разрешает apks размером 50 МБ.Попробуйте сначала, а затем посмотрите, есть ли у вас проблемы.

...