Si crea un objeto File que envuelve el directorio de nivel superior, puede llamar a su método mkdirs () para construir todos los directorios necesarios. Algo como:
// create a File object for the parent directory
File wallpaperDirectory = new File("/sdcard/Wallpaper/");
// have the object build the directory structure, if needed.
wallpaperDirectory.mkdirs();
// create a File object for the output file
File outputFile = new File(wallpaperDirectory, filename);
// now attach the OutputStream to the file object, instead of a String representation
FileOutputStream fos = new FileOutputStream(outputFile);
Nota: puede ser aconsejable usar Environment.getExternalStorageDirectory () para obtener el directorio "Tarjeta SD", ya que esto podría cambiar si aparece un teléfono que tiene algo más que una tarjeta SD (como flash incorporado, todo el iPhone) De cualquier manera, debe tener en cuenta que debe verificar para asegurarse de que realmente esté allí, ya que se puede extraer la tarjeta SD.
ACTUALIZACIÓN: desde el nivel 4 de API (1.6) también tendrá que solicitar el permiso. Algo como esto (en el manifiesto) debería funcionar:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Tuve el mismo problema y solo quiero agregar que AndroidManifest.xml también necesita este permiso:
fuente
Esto es lo que funciona para mí.
en su manifiesto y el código a continuación
fuente
En realidad, utilicé parte de @fiXedd asnwer y funcionó para mí:
Asegúrese de estar usando mkdirs () no mkdir () para crear la ruta completa
fuente
File.mkdirs()
. Luego mostró un ejemplo de uso.Con API 8 y superior, la ubicación de la tarjeta SD ha cambiado. La respuesta de @ fiXedd es buena, pero para un código más seguro, debe usar
Environment.getExternalStorageState()
para verificar si los medios están disponibles. Luego, puede usargetExternalFilesDir()
para navegar al directorio que desee (suponiendo que esté utilizando API 8 o superior).Puede leer más en la documentación del SDK .
fuente
Asegúrese de que el almacenamiento externo esté presente: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
fuente
No olvide asegurarse de que no tiene caracteres especiales en los nombres de archivo / carpeta. Me pasó con ":" cuando estaba configurando los nombres de las carpetas usando variables
caracteres no permitidos en los nombres de archivo / carpeta
U puede encontrar este código útil en tal caso.
El siguiente código elimina todo ":" y los reemplaza con "-"
fuente
Me enfrenté al mismo problema. Hay dos tipos de permisos en Android:
Aquí está la estrategia para obtener permisos peligrosos en Android 6.0
onRequestPermissionsResult
Aquí está mi caso: necesito escribir en un almacenamiento externo.
Primero, verifico si tengo el permiso:
Luego verifique la aprobación del usuario:
fuente
Estaba enfrentando el mismo problema, no pude crear el directorio en Galaxy S pero pude crearlo con éxito en Nexus y Samsung Droid. Cómo lo arreglé fue agregando la siguiente línea de código:
fuente
esto creará una carpeta llamada dor en su tarjeta sd. luego para buscar el archivo de eg- filename.json que se inserta manualmente en la carpeta dor . Me gusta:
<usa-permiso android: name = "android.permission.WRITE_EXTERNAL_STORAGE" />
y no olvides agregar código en manifiesto
fuente
fuente
Acabo de completar la publicación de Vijay ...
Manifiesto
Función
Uso
Podrías verificar si hay errores
fuente
fuente
Puede usar / sdcard / en lugar de Environment.getExternalStorageDirectory ()
fuente
fuente