¿Cómo crear un archivo en el almacenamiento interno de Android?

Quiero guardar un archivo en el almacenamiento interno en una carpeta específica. Mi código es:

File mediaDir = new File("media"); if (!mediaDir.exists()){ mediaDir.createNewFile(); mediaDir.mkdir(); } File f = new File(getLocalPath()); f.createNewFile(); FileOutputStream fos = new FileOutputStream(f); fos.write(data); fos.close(); 

getLocalPath devuelve /data/data/myPackage/files/media/qmhUZU.jpg pero cuando quiero crear la carpeta de medios estoy recibiendo la excepción "java.io.IOException: Sistema de archivos de sólo lectura". ¿Alguna idea de cómo escribir mis archivos en el almacenamiento interno del teléfono en los medios de la carpeta? Gracias.

Debe utilizar ContextWrapper como este:

 ContextWrapper cw = new ContextWrapper(context); File directory = cw.getDir("media", Context.MODE_PRIVATE); 

Como siempre, consulte la documentación , ContextWrapper tiene mucho que ofrecer.

Debe crear el directorio de media adjunto a lo que getLocalPath() devuelve.

Yo estaba recibiendo el mismo error exacto también. Aquí está la solución. Cuando especifique a dónde escribir, Android resolverá automáticamente su ruta en /data/ or /mnt/sdcard/ . Dejame explicar.

Si ejecuta la siguiente instrucción:

 File resolveMe = new File("/data/myPackage/files/media/qmhUZU.jpg"); resolveMe.createNewFile(); 

Se resolverá la ruta a la raíz /data/ algún lugar más alto en Android.

Me di cuenta de esto, porque después de ejecutar el código siguiente, se colocó automáticamente en la raíz /mnt/ sin mí traducir nada por mi cuenta.

 File resolveMeSDCard = new File("/sdcard/myPackage/files/media/qmhUZU.jpg"); resolveMeSDCard.createNewFile(); 

Una solución rápida sería cambiar el siguiente código:

 File f = new File(getLocalPath().replace("/data/data/", "/")); 

Espero que esto ayude

Hola intente esto creará directorio + archivo dentro de él

 File mediaDir = new File("/sdcard/download/media"); if (!mediaDir.exists()){ mediaDir.mkdir(); } File resolveMeSDCard = new File("/sdcard/download/media/hello_file.txt"); resolveMeSDCard.createNewFile(); FileOutputStream fos = new FileOutputStream(resolveMeSDCard); fos.write(string.getBytes()); fos.close(); System.out.println("Your file has been written"); 
  • Enlaces internos básicos no funcionan en la aplicación de nido de abeja?
  • Error al iniciar Studio de Android
  • ¿Cómo resuelvo estos errores internos de Maven?
  • ¿Cómo puedo leer el contenido del archivo desde el almacenamiento interno - Aplicación para Android
  • Android: Cannnot guardar datos downladed desde el servidor utilizando DownloadManager a la memoria interna
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.