write tutorial read permission from files create android file storage internal

tutorial - save files android internal memory



¿Cómo crear un archivo en Android Internal Storage? (5)

Debería crear el directorio de media adjunto a lo que getLocalPath() .

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 /data/data/myPackage/files/media/qmhUZU.jpg la excepción "java.io.IOException: Read-only file system". ¿Alguna idea sobre cómo escribir mis archivos en el almacenamiento interno del teléfono en una carpeta multimedia? Gracias.


Deberías usar ContextWrapper así:

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

Como siempre, consulte la ContextWrapper , ContextWrapper tiene mucho que ofrecer.


Hola, intente esto, creará el 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");


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

Si ejecuta la siguiente declaración:

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

Resolverá la ruta a la raíz /data/ algún lugar más arriba en Android.

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

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

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

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

Espero que esto ayude


Escribir un archivo

Al guardar un archivo en el almacenamiento interno, puede adquirir el directorio apropiado como un Archivo llamando a uno de estos dos métodos:

getFilesDir ()

Returns a File representing an internal directory for your app.

getCacheDir ()

Returns a File representing an internal directory for your app''s temporary cache files. Be sure to delete each file once it is no longer needed and implement a reasonable size limit for the amount of memory you use at any given time, such as 1MB.

Precaución: si el sistema tiene poca capacidad de almacenamiento, puede eliminar los archivos de caché sin previo aviso.