How to create directory automatically on SD card How to create directory automatically on SD card android android

How to create directory automatically on SD card


If you create a File object that wraps the top-level directory you can call it's mkdirs() method to build all the needed directories. Something like:

// create a File object for the parent directoryFile wallpaperDirectory = new File("/sdcard/Wallpaper/");// have the object build the directory structure, if needed.wallpaperDirectory.mkdirs();// create a File object for the output fileFile outputFile = new File(wallpaperDirectory, filename);// now attach the OutputStream to the file object, instead of a String representationFileOutputStream fos = new FileOutputStream(outputFile);

Note: It might be wise to use Environment.getExternalStorageDirectory() for getting the "SD Card" directory as this might change if a phone comes along which has something other than an SD Card (such as built-in flash, a'la the iPhone). Either way you should keep in mind that you need to check to make sure it's actually there as the SD Card may be removed.

UPDATE: Since API Level 4 (1.6) you'll also have to request the permission. Something like this (in the manifest) should work:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


Had the same problem and just want to add that AndroidManifest.xml also needs this permission:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


Here is what works for me.

 uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" 

in your manifest and the code below

public static boolean createDirIfNotExists(String path) {    boolean ret = true;    File file = new File(Environment.getExternalStorageDirectory(), path);    if (!file.exists()) {        if (!file.mkdirs()) {            Log.e("TravellerLog :: ", "Problem creating Image folder");            ret = false;        }    }    return ret;}