Home »
Android
Save/Read Data to/from Internal Storage Example in Android
Android Internal Storage Example: In this example (Android project), we will learn how to save/read data to/from internal storage in Android.
By Shamikh Faraz Last updated : June 08, 2023
Save/Read Data to/from Internal Storage Example in Android
Here, we are creating an Android example (project) to save/read data to/from internal storage using the FileInputStream and FileOutputStream classes.
Android Internal Storage Example: Code Files
XML Code
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.faraz.internalstorage_example.MainActivity">
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="20dp"
android:layout_marginTop="24dp"
android:ems="10" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/editText1"
android:layout_below="@+id/editText1"
android:layout_marginTop="24dp"
android:ems="10" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:layout_alignBottom="@+id/editText1"
android:layout_alignParentLeft="true"
android:text="File Name:" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText2"
android:layout_alignBottom="@+id/editText2"
android:layout_alignParentLeft="true"
android:text="Data:" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText2"
android:layout_below="@+id/editText2"
android:layout_marginLeft="70dp"
android:layout_marginTop="16dp"
android:text="save" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_toRightOf="@+id/button1"
android:text="read" />
</android.support.constraint.ConstraintLayout>
Java file: (MainActivity.java)
package com.example.faraz.internalstorage_example;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
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 {
EditText editTextFileName, editTextData;
Button saveButton, readButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextFileName = (EditText) findViewById(R.id.editText1);
editTextData = (EditText) findViewById(R.id.editText2);
saveButton = (Button) findViewById(R.id.button1);
readButton = (Button) findViewById(R.id.button2);
//Performing Action on Read Button
saveButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String filename = editTextFileName.getText().toString();
String data = editTextData.getText().toString();
FileOutputStream fos;
try {
fos = openFileOutput(filename, Context.MODE_PRIVATE);
//default mode is PRIVATE, can be APPEND etc.
fos.write(data.getBytes());
fos.close();
Toast.makeText(getApplicationContext(), filename + " saved",
Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
//Performing Action on Read Button
readButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String filename = editTextFileName.getText().toString();
StringBuffer stringBuffer = new StringBuffer();
try {
//Attaching BufferedReader to the FileInputStream by the help of InputStreamReader
BufferedReader inputReader = new BufferedReader(new InputStreamReader(
openFileInput(filename)));
String inputString;
//Reading data line by line and storing it into the stringbuffer
while ((inputString = inputReader.readLine()) != null) {
stringBuffer.append(inputString + "\n");
}
} catch (IOException e) {
e.printStackTrace();
}
//Displaying data on the toast
Toast.makeText(getApplicationContext(), stringBuffer.toString(),
Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Output
You have to run this code either on your device or in an emulator. If you run in emulator then it can read data only if you have set prior data in your emulator, otherwise it will not work. If you run this, on actual device, it will read data from device internal storage.