Pourquoi ai-je FileNotFoundException quand je crée et essayer d'écrire dans un fichier sur l'émulateur Android?

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

Question

Tout d'abord, je ne suis pas en train d'écrire à la SDCard. Je veux écrire des informations dans un fichier qui persiste entre les utilisations de l'application. Il est essentiellement un fichier de tenir favoris de l'utilisateur particulier. Voici ce que l'apparence de code comme:

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();
        }

Lors de l'exécution de ce code, nous obtenons le « fichier n'existe pas. » Toujours message dans notre DDMS journal.

Nous avons également essayé le code suivant en vain:

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();
        }

Il est de cette seconde partie de code qui se traduit par la FileNotFoundException.

J'ai lu plusieurs tutoriels sur l'écriture et la lecture des fichiers sur Android et je crois que je les suivais assez près, donc je ne sais pas pourquoi ce code ne fonctionne pas correctement. Je vous remercie de toute aide!

Était-ce utile?

La solution

Vous ne devriez pas utiliser la classe File directement. Utilisez Activity.getCacheDir() pour obtenir le cache dir qui est spécifique à votre application. Ensuite, utilisez new File(cachedir, "filename.tmp") pour créer le fichier.

Autres conseils

Préférences et SqlLite seront tous les deux vous permettra d'avoir des données persistantes sans gérer vos propres fichiers.

Pour utiliser les préférences partagées vous la saisir de votre contexte, vous modifiez les valeurs comme si

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

Pour obtenir une préférence sur

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

Ceci est vraiment la façon de faire les préférences de base plus simple, beaucoup plus facile à faire ensuite un fichier. Plus de chaînes sont pris en charge, les types de données les plus élémentaires sont disponibles à ajouter à la classe Préférences.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top