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.
<
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
เมื่ออ่านข้อความจาก 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.
<
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
เมื่ออ่านข้อความจาก Text file แล้วจะแสดงผลที่ ListView
พื้นฐาน SD Card บน Emulator สามารถอ่านได้ที่บทความนี้