อ่านและเขียนไฟล์ด้วยโมดูล fs/promises และสร้างพาธที่เชื่อถือได้ด้วยโมดูล path
เปิดบทเรียนนี้ใน Kodokonในเบราว์เซอร์ JavaScript ไม่ได้รับอนุญาตให้แตะต้องไฟล์บนดิสก์ของคุณ นั่นเป็นเรื่องของความปลอดภัย ในทางกลับกัน Node ทำงานบนเครื่องของคุณโดยตรง และสามารถอ่านและเขียนไฟล์ได้ด้วยโมดูล fs (file system) เราจะใช้เวอร์ชันสมัยใหม่ของมัน คือ fs/promises ซึ่งทุกฟังก์ชันของมันจะคืนค่าเป็น พรอมิส (promise) คุณรู้วิธีรอมันด้วย await อยู่แล้ว จากที่ได้เรียนในคอร์ส JavaScript สังเกตคำนำหน้า node: ในการ import มันทำให้ชัดเจนว่าโมดูลนี้มาจาก Node เอง ไม่ใช่จาก node_modules และข่าวดีคือ ในโมดูล ES await ทำงานได้โดยตรงในระดับไฟล์ โดยไม่ต้องมีฟังก์ชันครอบ
import { writeFile } from "node:fs/promises";
await writeFile("notes.txt", "First note\n");
console.log("File created!");ในการอ่าน ใช้หลักการเดียวกันกับ readFile พารามิเตอร์ตัวที่สองของมันสำคัญมาก utf8 ระบุ การเข้ารหัส (encoding) หมายถึงวิธีการแปลไบต์ที่เก็บอยู่บนดิสก์ให้เป็นข้อความที่อ่านได้ หากคุณละเว้นมัน Node จะคืนค่าเป็นอ็อบเจกต์ Buffer ซึ่งเป็นไบต์ดิบ แทนที่จะเป็นสายอักขระ
import { readFile } from "node:fs/promises";
const text = await readFile("notes.txt", "utf8");
console.log(text);มาพูดถึง พาธ (path) กัน พาธแบบ สัมพัทธ์ (relative) (notes.txt, data/log.txt) เริ่มจากโฟลเดอร์ปัจจุบัน ส่วนพาธแบบ สัมบูรณ์ (absolute) (C:\... หรือ /home/...) เริ่มจากรากของดิสก์ กับดักคลาสสิกคือ Windows คั่นโฟลเดอร์ด้วย \ ส่วน macOS และ Linux ใช้ / โมดูล path ช่วยแก้ปัญหานี้ path.join ประกอบชิ้นส่วนต่าง ๆ เข้าด้วยกันด้วยตัวคั่นที่ถูกต้อง ไม่ว่าจะเป็นระบบใดก็ตาม มาผสมมันกับ mkdir ซึ่งใช้สร้างโฟลเดอร์กัน
import path from "node:path";
import { mkdir, writeFile } from "node:fs/promises";
const file = path.join("data", "log.txt");
await mkdir("data", { recursive: true });
await writeFile(file, "First log\n");
console.log("Written to:", file);