TPA & Alibaba Cloud ผนึกกำลัง สร้างสรรค์สัมมนาและอบรม ต่อยอดความร่วมมือสู่อนาคต
เมื่อวันที่ 21 พฤศจิกายน ที่ผ่านมา คุณเซฟ พงษ์ศิริ นายก […]
[img class=”aligncenter” src=”/wp-content/uploads/2018/08/nodejs-green.png”]
ในการเขียนโปรแกรมสิ่งที่เราเกี่ยวข้องด้วยมากทีสุดอย่างหนึ่งก็คือการเขียนโปรแกรมร่วมกับไฟล์ ไม่ว่าจะเป็นไฟล์ Text เอกสาร รูปภาพ ไฟล์เสียง มัลติมีเดีย ล้วนเป็นส่วนประกอบในแอพพลิเคชั่นของเรา สำหรับ nodejs ไลบรารี่ที่ใช้จัดการเกี่ยวกับไฟล์อยู่ในไลบรารี่ที่ชื่อ fs ย่อมาจาก File System
ตัวอย่างการเขียนโค้ด สร้าง Text ไฟล์
var fs = require('fs'); fs.writeFile('message.txt', 'Hello Node.js', (err) => { if (err) throw err; console.log('It's saved!'); });
3. ทดสอบ
node ch10_fs.js
อธิบายโค้ด
var fs = require('fs');
เรียกใช้ไลบรารี่ fs
fs.writeFile('message.txt', 'Hello Node.js', (err) =>{}
fs.writeFile (fileName,content ,callback) สร้างไฟล์
ตัวอย่างการเขียนโค้ดเพิ่มข้อมลูลลง Text ไฟล์
จากโค้ดตัวอย่างก่อนหน้านี่ เพิ่มโค้ด ดังนี้
fs.appendFile('message.txt','Hi Are you ready? ',(err)=>{ if(err) throw err; console.log('It's appended!'); });
ลองทดสอบ
node ch10_fs.js
ผลลัพธ์
It's appended! It's saved!
เนื้อหาในไฟล์
Hello Node.js 1y?
ลำดับการทำงาน appendFile ทำก่อน writeFile เพราะเขียนเป็น asynchronous ทำให้ได้ผลลัพธ์ไม่เป็นลำดับต่อเนื่องกัน
ปรับเปลี่ยนโค้ดให้ทำงานตามลำดับ ดังนี้
fs.writeFile('message.txt', 'Hello Node.js', (err) => { if (err) throw err; console.log('It's saved!'); fs.appendFile('message.txt','Hi Are you ready? ',(err)=>{ if(err) throw err; console.log('It's appended!'); }); });
ผลลัพธ์
It's saved! It's appended!
เนื้อหาในไฟล์
Hello Node.js Hi Are you ready?
จำได้มั้ย การเขียนโค้ดแบบนี้มันคือ callback hell มาปรับโค้ดให้อ่านง่ายด้วย promise
var writeFile = new Promise( function(resolve, reject) { fs.writeFile('message.txt', 'Hello Node.js', (err) => { if (err) reject(err); resolve(true); console.log('It's saved!'); }) }); var appendFile = new Promise( function(resolve, reject) { fs.appendFile('message.txt', 'nHi Are you ready?', (err) => { if (err) reject(err); resolve(true); console.log('It's appended!'); }) }); writeFile .then(appendFile);
เมื่อเขียนข้อมูลลงไปแล้วเรามาเขียนโค้ดอ่านไฟล์กันบ้าง
ตัวอย่างการเขียนโค้ดอ่านไฟล์
var fileName = 'message.txt'; var content = fs.readFileSync(fileName).toString(); console.log(content);
fs.readFileSysc จะทำการอ่านไฟล์แบบ synchronous อ่านไฟล์จนจบก่อนจึงทำงานคำสั่งถัดไป
หากเราต้องการแก้ไขข้อมูลบรรทัดที่ต้องการสามารถทำได้ ดังนี้
ตัวอย่างการเขียนโค้ดแก้ไขข้อมูลบรรทัดที่ต้องการอย่างง่ายๆ
เพิ่มโค้ดต่อจากเมื่อสักครู่
var contents = content.split('n'); contents[1] = 'Edit Data this line'; contents[2] = 'Add new data'; fs.writeFile(fileName,contents.join('n'),function(err){ content = fs.readFileSync(fileName).toString(); console.log('New Data!'); console.log(content); });
อธิบายโค้ด
var contents = content.split('n');
ทำการตัด ข้อความเป็นเก็บไว้ในอาร์เรย์ ด้วยการตัดบรรทัด n คือแต่ละบรรทัด
contents[1] = 'Edit Data this line';
แก้ไขบรรทัดที่ 2 ซึ่งอยู่ในตำแหน่งอาร์เรย์ที่ 1 ด้วยคำว่า Edit Data this line (ตำแหน่งอาร์เรย์เริ่มที่ 0 พื้นฐานที่รู้กันอยู่แล้ว)
contents[2] = 'Add new data';
JavaScript เป็นภาษาที่มีความ dynamic อาร์เรย์ตำแหน่งที่ 2 ยังไม่มีค่าเลยก็สามารถประกาศและป้อนค่าไปได้เลย หลายๆภาษาจะไม่ยอมไห้ทำเช่นนี้ ซึ่งวิธีการแบบนี้ก็มีทั้งข้อดีและเสีย
contents.join('n')
ทำการแปลงอาร์เรย์เป็นข้อความ โดยให้เชื่อมต่อกันด้วย n เป็นตัวแยกบรรทัดของแต่ละอาร์เรย์
ตัวอย่างการลบไฟล์
var fileName = 'message.txt'; fs.unlinkSync(fileName); fs.exists(fileName,function(exists){ console.log(exists); });
อธิบายโค้ด
fs.unlinkSync(fileName);
NodeJS จะใช้คำไม่เหมือนภาษาอื่น ส่วนใหญ่ก็ใช้คำว่า delete หรือ remove แต่สำหรับ Node ใช้คำว่า unlink
fs.exists(fileName,function(exists){ console.log(exists); });
เมื่อทำการลบไฟล์ก็ทำการตรวจสอยให้แน่ใจว่ามีไฟล์อยู่หรือไม่
พบกับตอนที่ 10.2 การจัดการเกี่ยวกับไฟล์ต่อ