บันทึกข้อความภาษาไทย

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

ทดสอบกัน

Share this:
Tags:

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *