Можно ли поместить файлы в файловую систему Android во время установки? - PullRequest
0 голосов
/ 19 сентября 2011

Я очень плохо знаком с Android. Я хотел бы создать пакет, который после установки помещал бы файлы в папку приложения (/data/data/my.app / ...) файловой системы Android.

Я хотел бы сделать это, чтобы я мог получить доступ к файлам, используя стандартные методы Java-файлов (для повторного использования моего собственного кода), и не должен использовать методы доступа к ресурсам Android.

Единственный способ, которым я думал, может достичь чего-то в этом направлении, это поместить файлы в папку / res и скопировать их в файловую систему во время выполнения (например, при первом запуске). Недостатком этого является отсутствие двух копий каждого файла без причины.

Другим способом может быть заставить мое приложение загружать эти файлы с сервера (этот вариант также виден в другом ответе). Это возможно, но я бы не хотел устанавливать файловый сервер для такой простой задачи ...

Насколько я понимаю, DDMS здесь не поможет, поскольку позволяет только получить доступ к папке вручную после установки приложения.

У меня вопрос: есть ли другой способ достичь моей первоначальной цели (доступ к файлам стандартными методами Java)? Если нет, есть ли более чистый способ поместить файлы в файловую систему?

Спасибо!

Ответы [ 2 ]

1 голос
/ 19 сентября 2011

Вы можете поместить ваши файлы в / res / raw и затем использовать:

Resources res = context.getResources();
InputStream in_s = res.openRawResource(R.raw.myfile);

Или, если вы хотите, чтобы объект File

File f = new File(context.getResources().openRawResource(R.raw.myfile));

Тогда вы можете использовать обычные Java apisработать с вашими файлами.

1 голос
/ 19 сентября 2011

Есть 3 способа избежать дублирования:

  1. Как вы упомянули при использовании папки res / raw.Вы можете избежать дублирования, если ваш существующий код может использовать InputStream вместо File и использовать Resources.openRawResource () .
  2. Использовать ресурсыдоступ к файлу и доступ к файлу с помощью файла AssetManager.openNotAssetFd () .Опять же, это потребует использования Streams, а не класса File.Это может стать немного запутанным, если ваш файл сжат, потому что ресурсы сопоставлены с памятью.
  3. Если ваш код действительно привязан к File (не просто используйте его для открытия InputStream ).Чтобы избежать дублирования, вы можете загрузить файл из Интернета при первом запуске и сохранить его во внешнем хранилище.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...