Загрузка файлов размером более 1 м из папки ресурсов - PullRequest
36 голосов
/ 18 мая 2010

Я схожу с ума, я создал объект файла, чтобы его можно было прочитать с помощью ObjectInputStream, и поместил папку активов. Метод работает с файлом размером менее 1 МБ и выдает ошибку при работе с большими файлами. Я читал, что это предел платформы Android, но я также знаю, что этого можно «легко» избежать. Те, кто скачал игру Reging Thunder, например, могут легко увидеть, что в папке их ресурсов находится файл размером 18,9 МБ. Это мой код для чтения 1 объекта из ObjecInputStream

File f = File.createTempFile("mytempfile", "dat");
FileOutputStream fos = new FileOutputStream(f);

InputStream is = mc.getAssets().open(path,3);

ObjectInputStream ois=new ObjectInputStream(is);
byte[] data = (byte[]) ois.readObject();
fos.write(data);

fos.flush();
fos.close();
ois.close();
is.close();

теперь у меня есть несжатый файл, и я могу использовать его, не беспокоясь об ошибке «Этот файл нельзя открыть как дескриптор файла; возможно, он сжат»

Эта функция хорошо работает с файлами размером менее 1M, а файлы большего размера возвращают java.io.IOException в строке "ObjectInputStream ois = new ObjectInputStream (is);"

почему ??

Ответы [ 11 ]

0 голосов
/ 19 мая 2010

Вместо папки активов я поместил мои большие файлы в папку raw. Меня устраивает.

...