How do you write to a folder on an SD card in Android? How do you write to a folder on an SD card in Android? java java

How do you write to a folder on an SD card in Android?


File sdCard = Environment.getExternalStorageDirectory();File dir = new File (sdCard.getAbsolutePath() + "/dir1/dir2");dir.mkdirs();File file = new File(dir, "filename");FileOutputStream f = new FileOutputStream(file);...


Add Permission to Android Manifest

Add this WRITE_EXTERNAL_STORAGE permission to your applications manifest.

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="your.company.package"    android:versionCode="1"    android:versionName="0.1">    <application android:icon="@drawable/icon" android:label="@string/app_name">        <!-- ... -->    </application>    <uses-sdk android:minSdkVersion="7" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /></manifest> 

Check availability of external storage

You should always check for availability first. A snippet from the official android documentation on external storage.

boolean mExternalStorageAvailable = false;boolean mExternalStorageWriteable = false;String state = Environment.getExternalStorageState();if (Environment.MEDIA_MOUNTED.equals(state)) {    // We can read and write the media    mExternalStorageAvailable = mExternalStorageWriteable = true;} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {    // We can only read the media    mExternalStorageAvailable = true;    mExternalStorageWriteable = false;} else {    // Something else is wrong. It may be one of many other states, but all we need    //  to know is we can neither read nor write    mExternalStorageAvailable = mExternalStorageWriteable = false;}

Use a Filewriter

At last but not least forget about the FileOutputStream and use a FileWriter instead. More information on that class form the FileWriter javadoc. You'll might want to add some more error handling here to inform the user.

// get external storage file referenceFileWriter writer = new FileWriter(getExternalStorageDirectory()); // Writes the content to the filewriter.write("This\n is\n an\n example\n"); writer.flush();writer.close();


Found the answer here - http://mytechead.wordpress.com/2014/01/30/android-create-a-file-and-write-to-external-storage/

It says,

/*** Method to check if user has permissions to write on external storage or not*/public static boolean canWriteOnExternalStorage() {   // get the state of your external storage   String state = Environment.getExternalStorageState();   if (Environment.MEDIA_MOUNTED.equals(state)) {    // if storage is mounted return true      Log.v("sTag", "Yes, can write to external storage.");      return true;   }   return false;}

and then let’s use this code to actually write to the external storage:

// get the path to sdcardFile sdcard = Environment.getExternalStorageDirectory();// to this path add a new directory pathFile dir = new File(sdcard.getAbsolutePath() + "/your-dir-name/");// create this directory if not already createddir.mkdir();// create the file in which we will write the contentsFile file = new File(dir, "My-File-Name.txt");FileOutputStream os = outStream = new FileOutputStream(file);String data = "This is the content of my file";os.write(data.getBytes());os.close();

And this is it. If now you visit your /sdcard/your-dir-name/ folder you will see a file named - My-File-Name.txt with the content as specified in the code.

PS:- You need the following permission -

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