วันนี้จะมาเสนอวิธีการเขียนแอพ ที่เราต้องการบันทึกข้อความ ซึ่งเราได้ป้อนหรือดำเนินการค้างไว้ก่อนจะปิดแอพ บางทีเราไม่ต้องการอัพขึ้นสู่ Server บนอินเตอร์เน็ต เพราะมีความยุ่งยากและต้องเช่าพื้นที่ ดังนั้น มาใช้ความจำภายในมือถือเพื่อเก็บข้อมูลดังกล่าวกันเถอะ!
ตามปกติแล้วถ้าเราบันทึกเป็นภาษาอังกฤษจะไม่ค่อยมีปัญหา แต่ถ้าเป็นภาษาอื่น พอเราอ่านกลับมากลับเป็นภาษาต่างดาว ซึงไม่เหมือนกับที่เราเขียนเอาไว้ ผู้เขียนได้ค้นหาวิธีการมากมาย กว่าจะเจอโค๊ดที่ใช้ได้ทั้งภาษาไทยและภาษาอังกฤษ ดังนั้นอยากจะเขียนบทความนี้เพื่อเก็บโค๊ดดังกล่าวเอาไว้ เผื่อเพื่อน ๆ คนอื่นในอนาคต
สรา้งโปรเจคขึ้นมาแล้วก็มาดูไฟล์ทั้งหมดกัน
main_activity.xml
MainActivity.java
แยกส่วนประกอบของโค๊ดภายใน MainActivity.java
1. ชื่อไฟล์
String name = "Test";
2. ฟังก์ชันเขียนลงความจำภายใน
/*
* Function: Write Text to Internal Storage
* Input: file name and data (String type) */
private void writeInternalStorage(String fileName, String data){
try {
FileOutputStream fOut = openFileOutput(fileName, MODE_PRIVATE);
fOut.write(data.getBytes());
fOut.close();
Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show();
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
3. ฟังก์ชันอ่านจากหน่วยความจำภายใน
/* Function: Read Text from Internal Storage
* Input: file name
* @return: text */
private String readTextOnInternalStorage(String fileName){
String data = "";
try {
FileInputStream fin = openFileInput(fileName);
BufferedReader reader = new BufferedReader(new InputStreamReader(fin, "UTF-8"));
String aDataRow = "";
int n = 0;
while ((aDataRow=reader.readLine()) != null){
n++;
if (n > 1){
//More line
data += "\n" + aDataRow;
}else {
//One line
data = aDataRow;
}
}
Toast.makeText(getBaseContext(),"file read",Toast.LENGTH_SHORT).show();
} catch (java.io.IOException e) {
e.printStackTrace();
}
return data;
}
ทดสอบกัน
Tags: Android