อ่านไฟล์ ใน Node.js

ใน Node.js, คุณสามารถอ่านไฟล์ได้โดยใช้โมดูล fs (File System) ซึ่งเป็นโมดูลที่ใช้ในการทำงานกับไฟล์และโฟลเดอร์ในระบบไฟล์ของคุณ ตามนี้คือวิธีการอ่านไฟล์ใน Node.js:

  1. นำเข้าโมดูล fs:
    ในโค้ดของคุณ ให้เริ่มต้นโดยการนำเข้าโมดูล fs ด้วยคำสั่ง require:

    1
    const fs = require('fs');
  2. ใช้ fs.readFile() เพื่ออ่านไฟล์:
    ใช้ฟังก์ชัน fs.readFile() เพื่ออ่านเนื้อหาของไฟล์ โดยระบุเส้นทางไฟล์และฟังก์ชันควบคุม (callback function) ที่จะถูกเรียกเมื่อการอ่านไฟล์เสร็จสิ้น:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    const filePath = 'example.txt';

    fs.readFile(filePath, 'utf8', (err, data) => {
    if (err) {
    console.error('เกิดข้อผิดพลาดในการอ่านไฟล์:', err);
    return;
    }

    console.log('เนื้อหาของไฟล์:');
    console.log(data);
    });

    ในตัวอย่างนี้เราใช้ 'utf8' เพื่อระบุ encoding ของไฟล์เป็น UTF-8 โดยที่เนื้อหาของไฟล์จะถูกอ่านเป็นข้อความ.

  3. การจัดการข้อผิดพลาด:
    เมื่อมีข้อผิดพลาดในการอ่านไฟล์ ฟังก์ชัน callback จะรับอาร์กิวเมนต์แรกเป็นข้อผิดพลาด (ถ้ามี) และอาร์กิวเมนต์ที่สองเป็นข้อมูล (ถ้ามี) ดังนั้นคุณควรตรวจสอบ err เพื่อรับรู้ว่ามีข้อผิดพลาดหรือไม่.

  4. การใช้ fs.readFileSync() (เวอร์ชันแบบซิงโครนัส):
    หากคุณต้องการอ่านไฟล์แบบซิงโครนัส (synchronously) คุณสามารถใช้ fs.readFileSync() ได้ตามนี้:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    const filePath = 'example.txt';

    try {
    const data = fs.readFileSync(filePath, 'utf8');
    console.log('เนื้อหาของไฟล์:');
    console.log(data);
    } catch (err) {
    console.error('เกิดข้อผิดพลาดในการอ่านไฟล์:', err);
    }

    โปรดทราบว่าการใช้ fs.readFileSync() จะทำให้โค้ดถูกบล็อกไว้ (blocking) ระหว่างที่ไฟล์ถูกอ่าน ซึ่งอาจทำให้แอปพลิเคชันของคุณหยุดทำงานไประหว่างระยะเวลาที่อ่านไฟล์.

การใช้ fs.readFile() หรือ fs.readFileSync() ขึ้นอยู่กับความต้องการของคุณ หากคุณต้องการการอ่านแบบไม่บล็อกและมีความสามารถในการจัดการข้อผิดพลาดเป็นอิสระ fs.readFile() เป็นตัวเลือกที่ดี แต่หากคุณต้องการการอ่านแบบซิงโครนัสให้ใช้ fs.readFileSync() โดยระมัดระวังในการใช้ให้คำนึงถึงการบล็อกแอปพลิเคชันของคุณ.