Почему я получаю fileNotfoundException, когда я создаю и пытаюсь написать в файл на эмуляторе Android?

StackOverflow https://stackoverflow.com/questions/4424200

Вопрос

Во-первых, я не пытаюсь написать на 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, и я считаю, что я внимательно слежу за ними, поэтому я не уверен, почему этот код не работает успешно. Я ценю любую помощь!

Это было полезно?

Решение

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

Другие советы

Предпочтения и SQLLITE позволяют вам иметь постоянные данные, не управляя своими собственными файлами.

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top