Android Read Text file in SD Card (Java Android)

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

Android Read Text file in SD Card (Java Android)

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

Android Read Text file in SD Card (Java Android)

จัดเก็บไว้ที่ /mnt/sdcard/mydata/thaicreate.txt

ออกแบบ XML Layout บน Activity

Android Read Text file in SD Card (Java Android)

activity_main.xml

01.<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
03.android:layout_width="match_parent"
04.android:layout_height="match_parent" >
05. 
06.<Button
07.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.<TextView
16.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.@Override
20.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.// button1
27.final Button btn1 = (Button) findViewById(R.id.button1);
28.// textView1
29.final TextView txtV = (TextView) findViewById(R.id.textView1);
30. 
31.// Perform action on click
32.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 block
52.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.@Override
68.public boolean onCreateOptionsMenu(Menu menu) {
69.getMenuInflater().inflate(R.menu.activity_main, menu);
70.return true;
71.}
72. 
73.}

 

Screenshot

Android Read Text file in SD Card (Java Android)

เมื่ออ่านข้อความจาก Text file แล้วจะแสดงผลที่ TextView

 



Example 2 อ่านข้อความที่มีหลายบรรทัด และแสดงผลใน ListView

Android Read Text file in SD Card (Java Android)

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

Android Read Text file in SD Card (Java Android)

จัดเก็บไว้ที่ /mnt/sdcard/mydata/thaicreate.txt

ออกแบบ XML Layout บน Activity

Android Read Text file in SD Card (Java Android)

activity_main.xml

01.<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
03.android:layout_width="match_parent"
04.android:layout_height="match_parent" >
05. 
06.<ListView
07.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.@Override
20.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.// listView1
45.final ListView lisView1 = (ListView) findViewById(R.id.listView1);
46. 
47.// ArrayList to Array
48.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 block
59.e.printStackTrace();
60.Toast.makeText(MainActivity.this"Failed! = " + e.getMessage(),
61.Toast.LENGTH_LONG).show();
62.}
63. 
64.}
65. 
66.@Override
67.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

Android Read Text file in SD Card (Java Android)

เมื่ออ่านข้อความจาก Text file แล้วจะแสดงผลที่ ListView

พื้นฐาน SD Card บน Emulator สามารถอ่านได้ที่บทความนี้