2011-01-19 20 views
42

Una pregunta simple, relacionada con el directorio 'inicial' predeterminado cuando una aplicación escribe en la memoria interna. Por defecto, todos los archivos creados son colocados por el sistema operativo (2.2) en:Android Obtenga el Directorio de datos de la aplicación 'Inicio'

/data/data/your.package/files 

Al leer en los archivos, se utiliza el mismo defecto, cuando se mantiene en el contexto adecuado a través de openFileInput(), openFileOutput(). Pero si necesito verificar la existencia del archivo, por ejemplo, usando la clase File, necesito especificar la ruta completa en el constructor.

veo que hay Environment.getDataDirectory() (devuelve /data), Environment.getRootDirectory() (devuelve /system), etc., pero nada que ver con conseguir directorio 'home' de la aplicación.

No es un gran problema, pero prefiero no codificar la ruta completa en mi aplicación de archivo (digamos que el nombre del paquete cambia, digamos que la ruta cambia en una futura versión del sistema operativo) si hay alguna forma de referenciar el directorio 'inicio' de la aplicación mediante programación.

+0

relacionados http://stackoverflow.com/questions/5527764/get-application-directory –

Respuesta

84

Por supuesto, nunca falla. Encontrado la solución un minuto después de la publicación de la pregunta anterior ... solución para aquellos que pueden haber tenido el mismo problema:

ContextWrapper.getFilesDir() 

encontrado here.

+8

Esto devuelve '/ datos/datos//files', pero la forma de obtener la ruta con a este "archivos"? – Prizoff

+7

@Prizoff Use Context.getApplicationInfo(). DataDir, según [la respuesta de Kevin a continuación] (http://stackoverflow.com/a/12792520/80425) –

+0

está buscando esto: -http: //stackoverflow.com/ preguntas/5527764/get-application-directory –

33

Puede probar Context.getApplicationInfo().dataDir si desea la carpeta de datos persistentes del paquete.

getFilesDir() devuelve un subroot de esto.

+0

Esto está volviendo "/ data/user/0/" en mi Google Nexus 6, que es la carpeta incorrecta. –

13

Para obtener la ruta del archivo en el paquete de la aplicación;

ContextWrapper c = new ContextWrapper(this); 
Toast.makeText(this, c.getFilesDir().getPath(), Toast.LENGTH_LONG).show(); 
Cuestiones relacionadas