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.



Comments and Discussions!

Load comments ↻





Copyright © 2024 www.includehelp.com. All rights reserved.