Android Read Text file in SD Card (Java Android) ตัวอย่างการเขียน Android เพื่ออ่านข้อความที่อยู่ใน Text file(Read text file) โดยในตัวอย่างนี้มีทั้งอ่านข้อความที่มีบรรทัดเดียว และกรณีที่มีหลายบรรทัดจะแสดงข้อความใน ListView
รูปแบบการอ่านข้อความที่อยู่ในไฟล์
1.String path = "/mnt/sdcard/mydata/thaicreate.txt";2.File file = new File(path);3.BufferedReader br = new BufferedReader(new FileReader(file));4.ArrayList<String> myArr = new ArrayList<String>();5.String line;6.while ((line = br.readLine()) != null) {7.myArr.add(line);8.}
การอ่านข้อความใน Text file และเก็บลงใน ArrayList
Example 1 อ่านข้อความที่มีบรรทัดเดียว และแสดงผลใน TextView

ไฟล์ที่อยู่ใน SD Card

จัดเก็บไว้ที่ /mnt/sdcard/mydata/thaicreate.txt
ออกแบบ XML Layout บน Activity

activity_main.xml
01.<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"02.xmlns:tools="http://schemas.android.com/tools"03.android:layout_width="match_parent"04.android:layout_height="match_parent" >05. 06.<Button07.android:id="@+id/button1"08.android:layout_width="wrap_content"09.android:layout_height="wrap_content"10.android:layout_alignParentTop="true"11.android:layout_centerHorizontal="true"12.android:layout_marginTop="18dp"13.android:text="Read Text File" />14. 15.<TextView16.android:id="@+id/textView1"17.android:layout_width="wrap_content"18.android:layout_height="wrap_content"19.android:layout_below="@+id/button1"20.android:layout_centerHorizontal="true"21.android:layout_marginTop="23dp"22.android:text="TextView" />23. 24.</RelativeLayout>
MainActivity.java
01.package com.myapp;02. 03.import java.io.BufferedReader;04.import java.io.File;05.import java.io.FileReader;06. 07.import android.os.Bundle;08.import android.os.Environment;09.import android.app.Activity;10.import android.view.Menu;11.import android.view.View;12.import android.widget.Button;13.import android.widget.EditText;14.import android.widget.TextView;15.import android.widget.Toast;16. 17.public class MainActivity extends Activity {18. 19.@Override20.public void onCreate(Bundle savedInstanceState) {21.super.onCreate(savedInstanceState);22.setContentView(R.layout.activity_main);23. 24.final File sdcard = Environment.getExternalStorageDirectory(); // /mnt/sdcard/25. 26.// button127.final Button btn1 = (Button) findViewById(R.id.button1);28.// textView129.final TextView txtV = (TextView) findViewById(R.id.textView1);30. 31.// Perform action on click32.btn1.setOnClickListener(new View.OnClickListener() {33.public void onClick(View v) {34. 35./*** Read Text File in SD Card ***/36.try {37. 38.String path = sdcard + "/mydata/thaicreate.txt";39.// or path = "/mnt/sdcard/mydata/thaicreate.txt";40.File file = new File(path);41. 42.BufferedReader br = new BufferedReader(new FileReader(file));43.String line;44.line = br.readLine();45.br.close();46.file = null;47. 48.txtV.setText(line);49. 50.} catch (Exception e) {51.// TODO Auto-generated catch block52.e.printStackTrace();53.Toast.makeText(MainActivity.this, "Failed! = " + e.getMessage() ,54.Toast.LENGTH_LONG).show(); 55.}56. 57. 58.}59.});60. 61. 62. 63. 64. 65.}66. 67.@Override68.public boolean onCreateOptionsMenu(Menu menu) {69.getMenuInflater().inflate(R.menu.activity_main, menu);70.return true;71.}72. 73.}
Screenshot

เมื่ออ่านข้อความจาก Text file แล้วจะแสดงผลที่ TextView
Example 2 อ่านข้อความที่มีหลายบรรทัด และแสดงผลใน ListView

ไฟล์ที่อยู่ใน SD Card ที่มีหลายบรรทัด

จัดเก็บไว้ที่ /mnt/sdcard/mydata/thaicreate.txt
ออกแบบ XML Layout บน Activity

activity_main.xml
01.<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"02.xmlns:tools="http://schemas.android.com/tools"03.android:layout_width="match_parent"04.android:layout_height="match_parent" >05. 06.<ListView07.android:id="@+id/listView1"08.android:layout_width="match_parent"09.android:layout_height="wrap_content"10.android:layout_alignParentLeft="true"11.android:layout_centerVertical="true" >12.</ListView>13. 14.</RelativeLayout>
MainActivity.java
01.package com.myapp;02. 03.import java.io.BufferedReader;04.import java.io.File;05.import java.io.FileReader;06.import java.util.ArrayList;07. 08.import android.os.Bundle;09.import android.os.Environment;10.import android.app.Activity;11.import android.view.Menu;12.import android.widget.ArrayAdapter;13.import android.widget.ListView;14.import android.widget.Toast;15. 16.public class MainActivity extends Activity {17. 18. 19.@Override20.public void onCreate(Bundle savedInstanceState) {21.super.onCreate(savedInstanceState);22.setContentView(R.layout.activity_main);23. 24./*** Read Text File SD Card ***/25.try {26. 27.String sdcard = Environment.getExternalStorageDirectory()28..toString(); // /mnt/sdcard/29.String path = sdcard + "/mydata/thaicreate.txt";30.// or path = "/mnt/sdcard/mydata/thaicreate.txt";31.File file = new File(path);32. 33.BufferedReader br = new BufferedReader(new FileReader(file));34.ArrayList<String> myArr = new ArrayList<String>();35. 36.String line;37.while ((line = br.readLine()) != null) {38.myArr.add(line);39.}40. 41.br.close();42.file = null;43. 44.// listView145.final ListView lisView1 = (ListView) findViewById(R.id.listView1);46. 47.// ArrayList to Array48.String[] myData = {};49.myData = myArr.toArray(new String[myArr.size()]);50. 51.ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,52.android.R.layout.simple_list_item_1, myData);53. 54.lisView1.setAdapter(adapter);55. 56. 57.} catch (Exception e) {58.// TODO Auto-generated catch block59.e.printStackTrace();60.Toast.makeText(MainActivity.this, "Failed! = " + e.getMessage(),61.Toast.LENGTH_LONG).show();62.}63. 64.}65. 66.@Override67.public boolean onCreateOptionsMenu(Menu menu) {68.getMenuInflater().inflate(R.menu.activity_main, menu);69.return true;70.}71. 72.}
หลังจากที่อ่านข้อความจาก Text file ได้แล้วจะ Loop ข้อมูลและเก็บลงใน ArrayList เพื่อจะนำไปแสดงผลใน ListView
Screenshot

เมื่ออ่านข้อความจาก Text file แล้วจะแสดงผลที่ ListView
พื้นฐาน SD Card บน Emulator สามารถอ่านได้ที่บทความนี้