Une question simple, relative au répertoire par défaut 'home' lorsqu'une application écrit dans la mémoire interne. Par défaut, tous les fichiers créés sont placés par le système d'exploitation (2.2) dans:
/data/data/your.package/files
Lors de la lecture de fichiers, la même valeur par défaut est utilisée, lorsque vous conservez le contexte approprié via openFileInput()
, openFileOutput()
. Mais si j'ai besoin de vérifier l'existence d'un fichier, par exemple, en utilisant la classe File, je dois spécifier le chemin d'accès complet dans le constructeur.
Je vois qu'il y a Environment.getDataDirectory()
(renvoie /data
), Environment.getRootDirectory()
(renvoie /system
), Etc., mais rien de lié à l'obtention de la "maison" de l'application annuaire.
Ce n’est pas une grosse affaire, mais je préférerais ne pas coder en dur le chemin complet dans mon App for File à utiliser (dire que le nom du paquet change, dites que le chemin change dans une version ultérieure du système d’exploitation) s'il existe un moyen de référencer le fichier. le répertoire "personnel" de l'application par programme.
Bien sûr, n'échoue jamais. Nous avons trouvé la solution environ une minute après avoir posé la question ci-dessus ... solution pour ceux qui auraient pu avoir le même problème:
ContextWrapper.getFilesDir()
Trouvé ici .
Vous pouvez essayer Context.getApplicationInfo().dataDir
si vous souhaitez que le dossier de données persistant du package.
getFilesDir()
renvoie une sous-racine de ceci.
Pour obtenir le chemin du fichier dans le package d'application;
ContextWrapper c = new ContextWrapper(this);
Toast.makeText(this, c.getFilesDir().getPath(), Toast.LENGTH_LONG).show();