2012-08-02 15 views
22

Me gustaría guardar una imagen en el almacenamiento interno de mi aplicación, para hacerlo privada. Así que investigué un poco y vi 2 maneras de obtener el directorio.¿Cuál es la diferencia entre getDir y getFilesDir en Android?

1.Con getDir:

File dir = getDir(Environment.DIRECTORY_PICTURES, Context.MODE_PRIVATE); 

2. Con getFilesDir:

File dir = getFilesDir(); 

¿Qué es mejor? ¿Cuál devuelve la ubicación en el almacenamiento interno?

La forma de escribir archivos depende de la forma en que obtenga su directorio? Estoy un poco perdido ya que hay muchas maneras de escribir archivos en Android.

Respuesta

28

getFilesDir() devuelve un objeto de archivo a un directorio que es privado solo para su aplicación. Cuando usa openFileOutput(String, int), los datos que escribe se almacenan directamente en este directorio y ninguna otra aplicación puede acceder a ellos. Tiene sus archivos de aplicación.

getDir() le permite crear cualquier archivo o directorio en la memoria interna, a la que también pueden acceder otras aplicaciones, según el modo que la haya creado. openFileOutput(String, int) no funcionará con el resultado de esto, así que tendrá que usar otros medios para escribir y leer archivos para manejar este directorio o archivo. Esto se usa más para crear archivos personalizados que no sean solo archivos utilizados por su aplicación.

+0

¡Gracias! Y ¿'File dir = getDir (Environment.DIRECTORY_PICTURES, Context.MODE_PRIVATE);' obtendrá un 'File' en la memoria interna (debido a' MODE_PRIVATE')? – cleroo

+0

De nada. MODE_PRIVATE es la constante predeterminada para getDir y dice que su archivo/directorio será privado para su aplicación. getDir siempre devolverá/creará un directorio interno. Tenga cuidado con el hecho de que DIRECTORY_PICTURES es para API 8 en adelante. – Erol

+0

@Erol Entonces, ¿puedo concluir que getDir con 'MODE_PRIVATE' es igual que getFilesDir de alguna manera ...? –

Cuestiones relacionadas