Android read text file from internal storage


In the previous post we have seen how to read file from external storage (SD Card), now let's see how we can read the contents from a text file stored in Internal Storage.

File : MainActivity.java
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

	TextView dispText;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		dispText = (TextView) findViewById(R.id.text_file_data);
	}

	public void getTextFile(View v) {


		String data = getTextFileData("data.txt");

	
		dispText.setText(data);

	}

	public String getTextFileData(String fileName) {
		
		StringBuilder text = new StringBuilder();
		
		
		try {

		
		 FileInputStream fIS = getApplicationContext().openFileInput(fileName);
		 InputStreamReader isr = new InputStreamReader(fIS, "UTF-8");
         BufferedReader br = new BufferedReader(isr);

			String line;

			while ((line = br.readLine()) != null) {
				text.append(line + '\n');
			}
			br.close();
		} catch (IOException e) {
			Log.e("Error!", "Error occured while reading text file from Internal Storage!");

		}

		return text.toString();

	}
}
File : layout.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.code2care.readtextfile.MainActivity" >

    <TextView
        android:id="@+id/text_file_data"
        android:layout_width="fill_parent"
        android:layout_height="200dp"
        android:layout_alignParentRight="true"
        android:padding="10dp"
        android:text="@string/text_file_data" />

    <Button
        android:id="@+id/read_text_file"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="127dp"
        android:onClick="getTextFile"
        android:text="@string/btn" />

</RelativeLayout>