2011-02-07 15 views
41

No puedo entender por qué la respuesta a esto no está en los documentos para desarrolladores de Android; Los encuentro consistentemente frustrantes.¿Qué ruta del sistema de archivos usa Context.openFileOutput() de Android?

Vuelva al método openFileOutput() en la clase Contexto para abrir un archivo para escribir, ¿en qué ruta de archivo de almacenamiento interno escribe?

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

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

+2

'datos> datos> su ID de aplicación> archivos' – YumYumYum

+2

teléfono debe enrutarse para ver'/data/data' – tchelidze

Respuesta

53

Vuelva al método openFileOutput() en la clase Contexto para abrir un archivo para escribir, ¿en qué ruta de archivo de almacenamiento interno escribe?

Apunta donde getFilesDir() en Context regresa. Puede ver esto porque la documentación dice:

Devuelve la ruta absoluta al directorio en el sistema de archivos donde se almacenan los archivos creados con openFileOutput (String, int).

+1

Deseo que los documentos estén claros de que la ubicación puede moverse y qué método usar para encontrar la ubicación (por ejemplo, agregando getFilesDir() a la sección Ver también). Muchas gracias Mark, aprecia tu ayuda. –

+1

@Ollie C: Sí, es extraño que la referencia cruzada no esté allí. Y una de las desventajas de tener las cosas heredadas en cada página (por ejemplo, 'openFileOutput()' en cada subclase 'Context' de Javadoc) es que la búsqueda se vuelve algo más dolorosa. – CommonsWare

+0

@CommonsWare, soy un novato y esto puede parecer una pregunta ingenua pero se relaciona con este tema: cuando intento guardar el archivo en mi almacenamiento externo usando context.openFileOutput (this.fileName, Context.MODE_APPEND) el método no arroja ninguna excepción y se ejecuta normalmente y Context.getFilesDir() devuelve: /data/data/com.proj.myproject/files. pero cuando reviso la memoria externa de mi teléfono y voy a/Data está vacío. También agregué el permiso WRITE_EXTERNAL_STORAGE en el manifiesto. ¿Dónde podría estar guardando el archivo? ¡Gracias por tu ayuda! – powernit

1

Este archivo se escribe en una ruta relativa a su aplicación dentro de la memoria de los dispositivos. Es posible que con ddms eche un vistazo a la ubicación, pero cuando esté utilizando este Context.openFileOutput(), no debería preocuparse por ninguna ruta absoluta.

Si desea pasar el nombre del archivo debe considerar usar external storage.

16

En DDMS, encontré mi archivo en:

data > data > your app id > files 
+1

mi carpeta de datos siempre se ve vacía, ¿alguna idea de lo que me puede estar perdiendo? – Vituel

+0

podría ser que su teléfono tenga múltiples almacenamientos, ahora muchos teléfonos tienen unos GB de almacenamiento interno que se llama "sd0" (depende de su fabricación, algunos pueden elegir otro nombre), mientras que también le permiten insertar almacenamiento externo como la tarjeta SD que se llamará "sd1", tendrá que elegir el almacenamiento correcto antes de buscar los datos de su aplicación. –

+3

Debes rootear tu teléfono. Orelse la carpeta de datos se mostrará vacía. –

0

Puede recuperar esa ruta de archivo llamando Context#getFileStreamPath(String):

devuelve la ruta absoluta en el sistema de ficheros donde un archivo creado con openFileOutput(String, int) se almacena.

Y luego File#getAbsolutePath().

Cuestiones relacionadas