Here is a complete example of How to read and write files to SDCARD and application SandBox in Android.
First create a new project and inside the mainActivity paste this code.
package com.coderzheaven.filesexample; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { EditText edittext; Button b1, b2, b3, b4; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edittext = (EditText)findViewById(R.id.ed); edittext.setLines(10); b1 = (Button)findViewById(R.id.button1); b2 = (Button)findViewById(R.id.button2); b3 = (Button)findViewById(R.id.button3); b4 = (Button)findViewById(R.id.button4); b1.setOnClickListener(this); b2.setOnClickListener(this); b3.setOnClickListener(this); b4.setOnClickListener(this); } @Override public void onClick(View v) { int id = v.getId(); MyFile file = new MyFile(v.getContext()); switch(id){ case R.id.button1: if(!edittext.getText().toString().trim().equals("")){ file.writeToSD(edittext.getText().toString()); }else{ Toast.makeText(v.getContext(), "Please enter some contents for the file", Toast.LENGTH_LONG).show(); } break; case R.id.button2: edittext.setText(file.readFromSD()); break; case R.id.button3: if(!edittext.getText().toString().trim().equals("")){ file.writeToSandBox(edittext.getText().toString()); }else{ Toast.makeText(v.getContext(), "Please enter some contents for the file", Toast.LENGTH_LONG).show(); } break; case R.id.button4: edittext.setText(file.readFromSandBox()); break; } } }
Now create another class named MyFile.java and copy this code into it.
package com.coderzheaven.filesexample; import java.io. BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import android.annotation.SuppressLint; import android.content.Context; import android.os.Environment; import android.util.Log; public class MyFile { String TAG = "MyFile"; Context context; public MyFile(Context context){ this.context = context; } public Boolean writeToSD(String text){ Boolean write_successful = false; File root=null; try { // check for SDcard root = Environment.getExternalStorageDirectory(); Log.i(TAG,"path.." +root.getAbsolutePath()); //check sdcard permission if (root.canWrite()){ File fileDir = new File(root.getAbsolutePath()); fileDir.mkdirs(); File file= new File(fileDir, "samplefile.txt"); FileWriter filewriter = new FileWriter(file); BufferedWriter out = new BufferedWriter(filewriter); out.write(text); out.close(); write_successful = true; } } catch (IOException e) { Log.e("ERROR:---", "Could not write file to SDCard" + e.getMessage()); write_successful = false; } return write_successful; } public String readFromSD(){ File sdcard = Environment.getExternalStorageDirectory(); File file = new File(sdcard,"samplefile.txt"); StringBuilder text = new StringBuilder(); try { BufferedReader br = new BufferedReader(new FileReader(file)); String line; while ((line = br.readLine()) != null) { text.append(line); text.append('\n'); } } catch (IOException e) { } return text.toString(); } @SuppressLint("WorldReadableFiles") @SuppressWarnings("static-access") public Boolean writeToSandBox(String text){ Boolean write_successful = false; try{ FileOutputStream fOut = context.openFileOutput("samplefile.txt", context.MODE_WORLD_READABLE); OutputStreamWriter osw = new OutputStreamWriter(fOut); osw.write(text); osw.flush(); osw.close(); }catch(Exception e){ write_successful = false; } return write_successful; } public String readFromSandBox(){ String str =""; String new_str = ""; try{ FileInputStream fIn = context.openFileInput("samplefile.txt"); InputStreamReader isr = new InputStreamReader(fIn); BufferedReader br=new BufferedReader(isr); while((str=br.readLine())!=null) { new_str +=str; System.out.println(new_str); } }catch(Exception e) { } return new_str; } }
Now the layout for the xml file.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/ed" android:layout_width="fill_parent" android:layout_height="fill_parent" android:lines="5" android:gravity="top|left" android:inputType="textMultiLine" android:scrollHorizontally="false" android:minWidth="10.0dip" android:maxWidth="5.0dip" android:layout_weight="1"/> <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Write File to SDCARD" /> <Button android:id="@+id/button2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Read File from SDCARD" /> <Button android:id="@+id/button3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Write File to Application SandBox" /> <Button android:id="@+id/button4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Read File from Application SandBox" /> </LinearLayout>
Note you should give this permission in the AndroidManifest file.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
OK Done. Now run the project.
To view the files
1. To see the SDCARD
Open File explorer -> expand sdcard (or mnt/sdcard).
2. To see the Application SANDBOX
Open File explorer -> expand data/data/your_package_name/files.
Please leave your valuable comments on this post.
Pingback: How to read a text file that is stored in your application sandbox in ANDROID?
Thanks, it’s usefull for me
Thanks for the information.