Writing and reading from a file in Android.
openFileOutput()
is the method defined in ContextWrapper class used for creating a FileOutputStream for writing to a file.
openFileInput()
is the method defined in ContextWrapper class used for creating a FileInputStream for readinf reading from a file.
ContextWrapper
is the parent class of ContextThemeWrapper which is the parent of the Activity class.
Write to a file.
private void writeFile(String stringToSave) throws IOException { FileOutputStream outStream = null; try { outStream = openFileOutput(fileName, Context.MODE_PRIVATE); outStream.write(stringToSave.getBytes()); if (fileExists()) { displayText("File saved."); } else { displayText("File not saved."); } } catch (Exception e) { errorNotification(e.getMessage()); } finally { outStream.close(); } }
Read from a file.
private String readFile() throws IOException { FileInputStream inStream = null; InputStreamReader myInputStreamReader = null; BufferedReader myBufferedReader = null; String retrievedString = ""; try { inStream = openFileInput(fileName); myInputStreamReader = new InputStreamReader(inStream); myBufferedReader = new BufferedReader(myInputStreamReader); String readLineString = myBufferedReader.readLine(); while (readLineString != null) { retrievedString = retrievedString + readLineString; readLineString = myBufferedReader.readLine(); } } catch (IOException ioe) { errorNotification(ioe.getMessage()); } finally { myBufferedReader.close(); myInputStreamReader.close(); inStream.close(); } return retrievedString; }
Delete a file.
private void deleteMyFile(String fileName) { File dir = getFilesDir(); File file = new File(dir, fileName); boolean deleted = file.delete(); if (deleted) { displayText("File deleted."); } else { displayText("File not deleted."); } }
Check if a file exist.
private boolean fileExists() { File dir = getFilesDir(); File file = new File(dir, fileName); return file.exists(); }
A complete demo Activity class for writing and reading from a file in Android
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class FileStorageActivity extends Activity { private static final String fileName = "my_note.txt"; private EditText etInputString; private Button btnWrite; private Button btnRead; private Button btnDelete; private TextView tvDisplay; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); getApplicationContext(); etInputString = (EditText) findViewById(R.id.et_input_string); btnWrite = (Button) findViewById(R.id.btn_write); btnRead = (Button) findViewById(R.id.btn_read); btnDelete = (Button) findViewById(R.id.btn_delete); tvDisplay = (TextView) findViewById(R.id.tv_display); initButtonListeners(); } private void initButtonListeners() { btnWrite.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (!fileExists()) { try { String inputString = etInputString.getText().toString(); writeFile(inputString); } catch (IOException e) { errorNotification(e.getMessage()); } } else { displayText(fileName + " already exists!"); } } }); btnRead.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (fileExists()) { try { String myString = readFile(); displayText(myString); } catch (IOException e) { errorNotification(e.getMessage()); } } else { displayText(fileName + " does not exist!"); } } }); btnDelete.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (fileExists()) { deleteMyFile(fileName); } else { displayText(fileName + " does not exist"); } } }); } private void writeFile(String stringToSave) throws IOException { FileOutputStream outStream = null; try { outStream = openFileOutput(fileName, Context.MODE_PRIVATE); outStream.write(stringToSave.getBytes()); if (fileExists()) { displayText("File saved."); } else { displayText("File not saved."); } } catch (Exception e) { errorNotification(e.getMessage()); } finally { outStream.close(); } } private String readFile() throws IOException { FileInputStream inStream = null; InputStreamReader myInputStreamReader = null; BufferedReader myBufferedReader = null; String retrievedString = ""; try { inStream = openFileInput(fileName); myInputStreamReader = new InputStreamReader(inStream); myBufferedReader = new BufferedReader(myInputStreamReader); String readLineString = myBufferedReader.readLine(); while (readLineString != null) { retrievedString = retrievedString + readLineString; readLineString = myBufferedReader.readLine(); } } catch (IOException ioe) { errorNotification(ioe.getMessage()); } finally { myBufferedReader.close(); myInputStreamReader.close(); inStream.close(); } return retrievedString; } private void deleteMyFile(String fileName) { File dir = getFilesDir(); File file = new File(dir, fileName); boolean deleted = file.delete(); if (deleted) { displayText("File deleted."); } else { displayText("File not deleted."); } } private boolean fileExists() { File dir = getFilesDir(); File file = new File(dir, fileName); return file.exists(); } private void displayText(String stringName) { tvDisplay = (TextView) findViewById(R.id.tv_display); tvDisplay.setText(stringName); } private void errorNotification(String message) { tvDisplay = (TextView) findViewById(R.id.tv_display); tvDisplay.setTextColor(getResources().getColor(R.color.red)); tvDisplay.setText("ERROR: " + message); } }
The layout file main.xml for the demo activity.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/et_input_string" android:layout_width="fill_parent" android:layout_height="200dp" android:hint="Wite something here..."/> <Button android:id="@+id/btn_write" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Write" /> <Button android:id="@+id/btn_read" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Read" /> <Button android:id="@+id/btn_delete" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Delete" /> <TextView android:id="@+id/tv_display" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@android:color/white"/> </LinearLayout>
Search within Codexpedia
Custom Search
Search the entire web
Custom Search
Related Posts