To read a text file from SD Card (External Memory) in Android one has to make use of Environment.getExternalStorageDirectory() to get access to the external Storage. We make use of the File Class from java.io package as we usually use.
Example :We will create an Android Project with an Activity that has a Button and TextView. When the button is clicked we will read a text file from the SD card location "/Dir/data.txt" and display the data from the file to the TextView.
Note : Do not forget to place the text file in External Storage /Dir/data.txt. Also do not forget to add user permission : <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> in AndroidManifest.xml file.
File : activity_main.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>
File : strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ReadTextFile</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="text_file_data"></string>
<string name="btn">Open Text File</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ReadTextFile</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="text_file_data"></string>
<string name="btn">Open Text File</string>
</resources>
package com.code2care.readtextfile;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import android.os.Bundle;
import android.os.Environment;
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) {
// You can provide the dir location from SD card root
String data = getTextFileData("/Dir/data.txt");
// Display the text conetents on a TextView
dispText.setText(data);
}
public String getTextFileData(String fileName) {
// Get the dir of SD Card
File sdCardDir = Environment.getExternalStorageDirectory();
// Get The Text file
File txtFile = new File(sdCardDir, fileName);
// Read the file Contents in a StringBuilder Object
StringBuilder text = new StringBuilder();
try {
BufferedReader reader = new BufferedReader(new FileReader(txtFile));
String line;
while ((line = reader.readLine()) != null) {
text.append(line + '\n');
}
reader.close();
} catch (IOException e) {
Log.e("C2c", "Error occured while reading text file!!");
}
return text.toString();
}
}
Output :


If you are testing this Scenario on Emulator device, do not forget to create an SD Card with some memory while creating the Emulator from Android Virtual Device Manager.
Related Questions :How to read a file from Android External Storage ?
How to get a text from Android SD Card ?
How to display text in TextView from a file read from SD Card?
HashTags : #Android #AndroidTutorial #SDCard #FileOperations #SecondaryStorage #FileRead
- Android Error Unexpected cast to Button: layout tag was FrameLayout
- ADT quit unexpectedly error on Mac OSX Android Eclipse SDK
- Parsing Data for android-21 failed unsupported major.minor version 51.0
- Android Studio Ctrl Shift o auto import not working
- java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
- Android : How to make TextView Scrollable
- This class should be public (android.support.v7.internal.widget.ActionBarView.HomeView) Lint Error
- Integrating Android Facebook SDK 3.17.2 Tutorial
- Android R Cannot Be Resolved To A Variable
- Android : Exception raised during rendering: action_bar API 22
- How to take screenshot on Android
- Read Text file from SD Card : Android Programming
- How to make Android EditText not editable
- Your Android SDK is out of date or is missing templates. Please ensure you are using SDK version 22 or later.
- The declared package does not match the expected package Eclipse
- Can't Run SDK Manager find_java.bat issue
- What is Android Toast.LENGTH_SHORT and Toast. LENGTH_LONG durations
- Android Emulator Soft Back button action using Computer keyboard
- Multiline EditText in Android Example
- Use 5G Network on Android Emulator
- Make Android TextView Clickable like Buttons
- How to empty trash in Android Device
- Android : Execute some code after back button is pressed
- Disable Fading Edges Scroll Effect Android Views
- How To Disable Landscape Mode in Android Application
- pwd Command - Print Working Directory - Linux
- Install Native Golang on M1/M2 ARM based Mac - MacOS
- Android Wifi WPA2/WPA Connects and Disconnects issue - Android
- ASCII to HEX and HEX to ASCII Conversion Notepad++ - NotepadPlusPlus
- FCM Messages! Testing Notifcation from Microsoft to investigate this problem [Microsoft Teams] - Microsoft
- Java 20 (JDK) released and here is what is new and deprecated and deleted - Java
- How to mute all sounds in Notepad++ - NotepadPlusPlus
- Display full website URL/address in Safari macOS Browser - MacOS