Почему я получаю FileNotFoundException при создании и попытке записи в файл на эмуляторе Android? - PullRequest
0 голосов
/ 13 декабря 2010

Во-первых, я не пытаюсь записать на SDCard.Я хочу записать некоторую информацию в файл, который сохраняется между использованиями приложения.По сути, это файл для хранения избранного конкретного пользователя.Вот как выглядит код:

try {
            File file = new File("favorites.txt");

            if (file.exists()) {
                Log.d(TAG, "File does exist.");
                fis = new FileInputStream(file);
                br = new BufferedReader(new InputStreamReader(fis));
            }
            else {
                Log.d(TAG, "File does not exist.");
                return favDests;
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

При запуске этого кода мы всегда получаем «Файл не существует».сообщение в нашем журнале DDMS.

Мы также попробовали следующий код безрезультатно:

try {
            File file = new File(GoLincoln.FAV_DEST_FILE);

            fis = new FileInputStream(file);
            br = new BufferedReader(new InputStreamReader(fis));

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

Именно эта вторая часть кода приводит к исключению FileNotFoundException.

Я прочитал несколько учебных пособий по написанию и чтению файлов на Android, и мне кажется, что я очень близко им следую, поэтому я не уверен, почему этот код не работает успешно.Я ценю любую помощь!

Ответы [ 2 ]

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

Вы не должны использовать класс File напрямую. Используйте Activity.getCacheDir(), чтобы получить каталог кеша, специфичный для вашего приложения. Затем используйте new File(cachedir, "filename.tmp") для создания файла.

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

Preferences и SQLLite позволят вам иметь постоянные данные без управления вашими собственными файлами.

Чтобы использовать общие настройки, вы извлекаете их из контекста, а затем редактируете значения следующим образом:

mySharedPreferences = context.getSharedPreferences("DatabaseNameWhateverYouWant", 0);
mySharedPreferences.getEditor().putString("MyPreferenceName", "Value").commit();

Чтобы получить предпочтение

mySharedPreferences.getString("MyPreferenceName", "DefaultValue");

Это действительно самый простой способ сделать основные настройки, намного проще, чем сделать файл. Поддерживается больше строк, большинство основных типов данных доступно для добавления в класс Preferences.

...