Как сохранить файл/ответы, если у пользователя нет SD-карты?

Я написал код, который сохраняет ответы пользователя, а также записанный аудиофрагмент (.3gp) на его SD-карту, которая затем загружается на сервер. Я знаю, что это, вероятно, не лучший способ сделать это, потому что у пользователя может не быть SD-карты. Я знаю, что могу ввести код, чтобы проверить, есть ли у пользователя SD-карта, но это мало поможет. Есть ли альтернативный способ хранения информации или файлов на устройстве, у которого нет SD-карты, или лучший способ сделать это? Спасибо за помощь!

РЕДАКТИРОВАТЬ: приведенный ниже код был рабочим решением

try{
File pathCacheDir = getCacheDir();
System.out.println("Got the Cache directory");
File newCacheFile = new File(pathCacheDir, cacheFileName);
newCacheFile.createNewFile();
FileOutputStream stream = new FileOutputStream (newCacheFile.getAbsolutePath());

person IZI_Shadow_IZI    schedule 09.06.2011    source источник


Ответы (3)


Вы должны иметь возможность создать базу данных для своего приложения и сохранить файл в blob< /а>.

person Haphazard    schedule 09.06.2011

Обычный способ — хранить большие файлы на сервере, а ваше приложение загружает их по мере необходимости. Экономьте память! :-)

person Gangnus    schedule 09.06.2011
comment
Однако файлы создаются пользователем. Нет необходимости скачивать что-либо с сервера. Например, пользователь заполняет вопросник, а затем он отправляется на сервер... Думаю, я мог бы создать базу данных на сервере, а затем отправить свои ответы в базу данных? - person IZI_Shadow_IZI; 09.06.2011
comment
Точно. Если пользователь создает и получает файлы, конечно, БД - лучший способ. Но если вы используете БД на сервере, пользователь может использовать ваше приложение только с включенным Интернетом. Боюсь, что больше пользователей предпочтут использовать SD, чем платить за сеть. Или, если вы делаете какой-то более крупный проект, вы можете поддерживать ОБЕ БД на сервере и на карте. - person Gangnus; 10.06.2011

Вы должны хранить некоторые временные данные в папке строки проекта.

if (android.os.Environment.getExternalStorageState()
                                            .equals(android.os.Environment.MEDIA_MOUNTED))
                                            cacheDir = new File(android.os.Environment.getExternalStorageDirectory(),
                                                            "LazyList");
                                        else
                                            cacheDir = Login.this.getCacheDir();
                                        if (!cacheDir.exists())
                                            cacheDir.mkdirs();
                                        File f = new File(cacheDir,"profileimage.jpg");
                                        try 
                                        {
                                            InputStream is = new URL(userImageurl).openStream();
                                            OutputStream os = new FileOutputStream(f);
                                            Utils.CopyStream(is, os);
                                            os.close();
                                        } catch (Exception ex) 
                                        {
                                        }

Внимательно прочитайте мой приведенный выше код в этом коде. У меня есть файл изображения в папке строки проекта, а затем загрузите его на сервер.

Я надеюсь, что это помощь.

person DynamicMind    schedule 09.06.2011
comment
Не могли бы вы объяснить больше? Вы имели ввиду сырую папку? - person IZI_Shadow_IZI; 09.06.2011
comment
Пожалуйста, покажите мой ответ, который я отредактировал для большей ясности в моем ответе. - person DynamicMind; 09.06.2011