วันนี้จะมาเสนอวิธีการเขียนแอพ ที่เราต้องการบันทึกข้อความ ซึ่งเราได้ป้อนหรือดำเนินการค้างไว้ก่อนจะปิดแอพ บางทีเราไม่ต้องการอัพขึ้นสู่ 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