57 votes

Quel chemin de système de fichiers est utilisé par la fonction Context.openFileOutput() d'Android ?

Je ne comprends pas pourquoi la réponse à cette question ne se trouve pas dans les documents destinés aux développeurs Android ; je les trouve constamment frustrants.

Concernant la méthode openFileOutput() de la classe Context pour ouvrir un fichier en vue de l'écrire, vers quel chemin de fichier de stockage interne écrit-elle ?

http://developer.Android.com/reference/Android/content/Context.html

http://developer.Android.com/guide/topics/data/data-storage.html#filesInternal

6 votes

data > data > your app id > files

3 votes

Le téléphone doit être enraciné pour être affiché /data/data

67voto

CommonsWare Points 402670

Concernant la méthode openFileOutput() de la classe Context pour ouvrir un fichier en vue de l'écrire, vers quel chemin de fichier de stockage interne écrit-elle ?

Il indique où getFilesDir() sur Context retours. Vous pouvez le dire parce que la documentation indique :

Renvoie le chemin absolu vers le répertoire du système de fichiers où sont stockés les fichiers créés avec openFileOutput(String, int).

1 votes

J'aimerais que la documentation soit claire sur le fait que l'emplacement peut se déplacer et sur la méthode à utiliser pour trouver l'emplacement (par exemple, en ajoutant getFilesDir() à la section Voir aussi). Merci beaucoup Mark, j'apprécie votre aide.

1 votes

@Ollie C : Oui, c'est étrange que la référence croisée ne soit pas là. Et l'un des inconvénients d'avoir les trucs hérités sur chaque page (par ex, openFileOutput() dans chaque Context Javadoc de la sous-classe) est que la recherche devient un peu plus pénible.

0 votes

@CommonsWare, je suis un débutant et ma question peut sembler naïve mais elle est liée à ce sujet : Lorsque j'essaie d'enregistrer le fichier sur mon stockage externe en utilisant context.openFileOutput(this.fileName, Context.MODE_APPEND) la méthode ne lève aucune exception et s'exécute normalement et Context.getFilesDir() renvoie : /data/data/com.proj.myproject/files. mais quand je vérifie la mémoire externe de mon téléphone et que je vais dans /Data il est vide. J'ai également ajouté la permission WRITE_EXTERNAL_STORAGE dans le manifeste. Où le fichier peut-il être enregistré alors ? Merci pour votre aide !

18voto

Craig Zheng Points 154

Dans le DDMS, j'ai trouvé mon fichier sous :

data > data > your app id > files

2 votes

Mon dossier de données semble toujours vide, une idée de ce que je pourrais manquer ?

0 votes

Il se peut que votre téléphone ait plusieurs stockages, maintenant beaucoup de téléphones ont quelques Go de stockage interne qui sont appelés "sd0" (cela dépend de votre fabricant, certains pourraient choisir un autre nom), tout en vous permettant également d'insérer un stockage externe comme une carte SD qui sera appelée "sd1", vous devrez choisir le bon stockage avant de rechercher les données de votre application.

4 votes

Votre téléphone doit être enraciné. Sinon, le dossier de données sera vide.

3voto

arekolek Points 1

Vous pouvez récupérer ce chemin de fichier en appelant Context#getFileStreamPath(String) :

Renvoie le chemin absolu sur le système de fichiers où un fichier créé avec openFileOutput(String, int) est stocké.

Il renvoie un File alors, appelez File#getAbsolutePath() .

Donc, pour résumer :

context.getFileStreamPath(name).getAbsolutePath()

2voto

Heiko Rupp Points 15153

Ce fichier est écrit dans un chemin relatif à votre application dans la mémoire de l'appareil. Vous pouvez peut-être avec ddms mais lorsque vous utilisez Context.openFileOutput(), vous ne devez pas vous soucier du chemin absolu.

Si vous voulez passer le nom du fichier, vous devriez envisager d'utiliser stockage externe .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X