การลบไฟล์ใน Node.js

21 December 2023

ในบทความนี้ คุณจะได้เรียนรู้เกี่ยวกับการเขียนโปรแกรมเพื่อลบไฟล์ใน Node.js ซึ่งการลบไฟล์นั้นสามารถใช้ฟังก์ชันจากโมดูล fs ของ Node.js ได้ นี่เป็นเนื้อหาที่เราจะพูดถึงในบทนี้

  • ฟังก์ชัน fs.unlink()
  • ฟังก์ชัน fs.unlinkSync()
  • ฟังก์ชัน fsPromises.unlink()

ฟังก์ชัน fs.unlink()

ฟังก์ชันพื้นฐานสำหรับลบไฟล์ใน Node.js คือฟังก์ชัน fs.unlink() ที่ทำงานแบบ Asynchronous นี่เป็นรูปแบบการใช้งาน

fs.unlink(path, callback);
  • path: พาธของไฟล์ที่ต้องการลบ
  • callback: ฟังก์ชันที่จะถูกเรียกเมื่อการทำงานเสร็จสิ้น

ต่อไปมาดูตัวอย่างการเขียนโปรแกรมเพื่อลบไฟล์ด้วยฟังก์ชันดังกล่าว นี่เป็นโปรแกรมลบไฟล์ Text อย่างง่าย โดยก่อนที่รันโปรแกรมคุณต้องสร้างไฟล์ my_file.txt ขึ้นมาก่อน

delete_files_callback.js
const fs = require("fs");

fs.unlink("my_file.txt", (err) => {
    if (err) {
        console.log(err.message);
    } else {
        console.log("my_file.txt was deleted successfully.");
    }
});

นี่เป็นผลลัพธ์ของโปรแกรม

my_file.txt was deleted successfully.

ในตัวอย่างนี้ เราได้เขียนโปรแกรมเพื่อลบไฟล์ my_file.txt เมื่อการทำงานเสร็จสิ้น ฟังก์ชัน Callback จะถูกเรียกใช้งานพร้อมกับพารามิเตอร์ err ที่จะมีค่าเป็น null ในกรณีที่การลบไฟล์สำเร็จหรือเป็นออบเจ็ค Error ในกรณีเกิดข้อผิดพลาดในการลบไฟล์

ในการลบไฟล์นั้นไฟล์ที่ต้องการลบจะต้องมีอยู่จริง เนื่องจากเราได้รันโปรแกรมไปก่อนหน้าแล้ว หากรันโปรแกรมซ้ำอีกครั้งจะได้รับข้อผิดพลาดเกิดขึ้นว่าไฟล์ที่ต้องการลบไม่มีอยู่ดังที่แสดงด้านล่างนี้

ENOENT: no such file or directory, unlink 'C:\deleting-files\my_file.txt'

ฟังก์ชัน fs.unlinkSync()

ฟังก์ชัน fs.unlinkSync() เป็นอีกฟังก์ชันลบไฟล์ใน Node.js ที่ทำงานแบบ Synchronous ซึ่งจะบล็อกโปรแกรมจนกว่าการทำงานจะเสร็จสิ้น นี่เป็นรูปแบบการใช้งาน

fs.unlinkSync(path);
  • path: พาธของไฟล์ที่ต้องการลบ

ในการทำงานฟังก์ชันนี้จะ throw ข้อผิดพลาดขึ้นหากการลบไฟล์ไม่สำเร็จ ซึ่งสามารถใช้คำสั่ง try catch เพื่อตรวจสอบข้อผิดพลาดในระหว่างการลบไฟล์ได้ นี่เป็นตัวอย่างการใช้งาน

delete_files_sync.js
const fs = require("fs");

try {
    fs.unlinkSync("my_file.txt");
    console.log("my_file.txt was deleted successfully.");
} catch (err) {
    console.log(err.message);
}

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

my_file.txt was deleted successfully.

ฟังก์ชัน fsPromises.unlink()

ฟังก์ชัน fsPromises.unlink() เป็นฟังก์ชันลบไฟล์ที่จะส่งค่ากลับเป็น Promise ฟังก์ชันนี้จะอยู่ในโมดูลย่อย fs/promises นี่เป็นรูปแบบการใช้งาน

fsPromises.unlink(path);
  • path: พาธของไฟล์ที่ต้องการลบ

ฟังก์ชันนี้จะส่งค่ากลับเป็น Promise ออบเจ็คที่จะ Resolve เมื่อการลบไฟล์สำเร็จหรือ Reject ในกรณีที่การลบไฟล์ไม่สำเร็จ ซึ่งเราสามารถใช้เมธอด then และ catch ของ Promise เพื่อตรวจสอบผลการทำงาน นี่เป็นตัวอย่างการใช้งาน

delete_files_promise.js
const fsPromises = require("fs/promises");

fsPromises.unlink("my_file.txt").then(() => {
    console.log("my_file.txt was deleted successfully.");
}).catch((err) => {
    console.log(err.message);
});

นอกจากนี้เรายังสามารถใช้มันร่วมกับคำสั่ง async/await เพื่อทำให้การทำงานเป็นแบบ Synchronous

delete_files_async_await.js
const fsPromises = require("fs/promises");

(async () => {
    try {
        await fsPromises.unlink("my_file.txt");
        console.log("my_file.txt was deleted successfully.");
    } catch (err) {
        console.log(err.message);
    }
})();

นี่เป็นผลลัพธ์ของโปรแกรมเมื่อการลบไฟล์สำเร็จ

my_file.txt was deleted successfully.

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการเขียนโปรแกรมเพื่อลบไฟล์บน Node.js ซึ่งในการลบไฟล์นั้นมีฟังก์ชันหลายรูปแบบให้ใช้งานไม่ว่าจะเป็น Callback, Synchronous หรือ Promise โดยคุณสามารถเลือกใช้วิธีที่เหมาะสมกับงานของคุณได้

บทความนี้เป็นประโยชน์หรือไม่?Yes·No