آموزش مقدماتی NodeJS | کار با فایل‌ها

خواندن فایل‌ها

در Node.js می‌توانیم فایل‌ها را به دو روش اصلی بخوانیم: روش همگام (Synchronous) و روش ناهمگام (Asynchronous). برای کار با فایل‌ها، از ماژول داخلی به نام fs استفاده می‌کنیم که مخفف File System است. برای استفاده از آن کافی است در ابتدای کد بنویسیم:

const fs = require('fs');

روش اول: خواندن همگام فایل با readFileSync

در این روش، اجرای برنامه تا زمانی که خواندن فایل کامل نشود متوقف می‌ماند. این روش ساده است اما برای فایل‌های بزرگ یا برنامه‌های واقعی توصیه نمی‌شود، چون باعث کندی برنامه می‌شود.

const fs = require('fs');

const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);

در اینجا:

  • آرگومان اول نام فایل است.
  • آرگومان دوم 'utf8' مشخص می‌کند که محتوای فایل به صورت متن خوانده شود. اگر این را ننویسیم، خروجی به صورت Buffer نمایش داده می‌شود.
  • خروجی مستقیماً در متغیر data ذخیره می‌شود.

روش دوم: خواندن ناهمگام فایل با readFile

در این روش، Node.js فایل را در پس‌زمینه می‌خواند و برنامه متوقف نمی‌شود. وقتی خواندن تمام شد، یک تابع callback اجرا می‌شود. این روش برای برنامه‌های واقعی مناسب‌تر است.

const fs = require('fs');

fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) {
    console.error('خطا در خواندن فایل:', err);
    return;
  }
  console.log(data);
});

در اینجا:

  • آرگومان سوم یک تابع callback است که دو پارامتر دارد: err برای خطا و data برای محتوای فایل.
  • اگر خطایی رخ دهد، err مقدار دارد و باید آن را مدیریت کنیم.
  • اگر خطایی نباشد، err مقدار null دارد و data شامل محتوای فایل است.

روش سوم: خواندن فایل با Promise (روش مدرن)

می‌توانیم از نسخه Promise-based ماژول fs استفاده کنیم که کد را تمیزتر می‌کند:

const fs = require('fs').promises;

async function readMyFile() {
  try {
    const data = await fs.readFile('example.txt', 'utf8');
    console.log(data);
  } catch (err) {
    console.error('خطا در خواندن فایل:', err);
  }
}

readMyFile();

در این روش از async/await استفاده می‌کنیم که خوانایی کد را بالا می‌برد و مدیریت خطا با try/catch ساده‌تر می‌شود.

نکات مهم:

  • اگر فایل مورد نظر وجود نداشته باشد، خطا دریافت می‌کنیم. در روش همگام این خطا برنامه را متوقف می‌کند، اما در روش‌های ناهمگام می‌توانیم آن را مدیریت کنیم.
  • همیشه بهتر است مسیر فایل را دقیق مشخص کنید، مثلاً ./files/example.txt تا مطمئن شوید Node.js فایل را در مسیر درست جستجو می‌کند.
  • برای پروژه‌های واقعی، روش Promise-based یا ناهمگام توصیه می‌شود.
پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1
  • 2