آموزش متدهای مربوط به ماژول fs یا file system در Nodejs

دسته بندی: آموزش
زمان مطالعه: ۵ دقیقه
۰۳ آذر ۱۳۹۷

آموزش متدهای مربوط به ماژول fs یا file system در Nodejsدر این مطلب قصد داریم متدهای مربوط به ماژول fs رو بهتون معرفی کرده و کاربرد اونا رو بهتون توضیح بدیم تا بیشتر با این ماژول مهم آشنا بشید.

ماژول fs متدهای کاربردی و مفیدی رو در اختیارتون قرار میده که با استفاده از اونا میتونین با file system ارتباط برقرار کنید و کارهای مورد نظر خودتون رو انجام بدین.

برای استفاده از این ابزار، نیاز به هیچ نصبی نیست. این ماژول یکی از ماژولهای اصلی Nodejs هست که همون موقع که node رو نصب میکنید، این ماژول و ماژولهای اصلی دیگر نصب میشن.

متدهای مربوط به ماژول fs

برای استفاده از این ماژول در پروژه خودتون باید اون رو require کنید. بصورت زیر:

const fs = require('fs');

زمانی که این ماژول رو وارد پروژه خودتون کردید، به تمامی متدهای اون دسترسی خواهید داشت. این ماژول متدهای زیر را دارد:

  • fs.access() : با استفاده از متد میتونین بررسی کنید که فایل مورد نظر وجود دارد یا خیر و یا اینکه Nodejs میتونه با Permission هایی که داره به اون دسترسی داشته باشه یا خیر.
  • fs.appendFile() : با این متد میتونین اطلاعات مورد نظرتون رو به فایل اضافه یا append کنید. اگر فایل مورد نظر از قبل وجود نداشته باشد، ساخته خواهد شد.
  • fs.chmod() : با استفاده از این متد میتونین Permission های یک فایل رو تغییر بدین. متدهای lchmod و fchmod نیز مربوط به این متد هستند.
  • fs.chown() : با استفاده از این متد میتونین owner یا صاحب و گروه مربوط به فایل مورد نظر رو تغییر بدین. متدهای lchown و fchown هم مربوط به این متد هستند.
  • fs.close() : با استفاده از این متد میتونین File descriptor مربوط به یک فایل رو ببندید.
  • fs.copyFile() : با استفاده از این میتونین فایل مورد نظرتون رو کپی کنید.
  • fs.createReadStream() : میتونین یک stream خواندنی را با استفاده از این متد به وجود بیارید.
  • fs.createWriteStream() : میتونین یک stream نوشتنی را با استفاده از این متد به وجود بیارید.
  • fs.link() : با استفاده از این متد میتونین یک hard link رو برای فایل مورد نظرتون به وجود بیارید. در این مطلب میتونین فرق hard link و soft link رو مطالعه کنید.
  • fs.mkdir() : این متد برای به وجود آوردن یک دایرکتوری جدید مورد استفاده قرار میگیرد.
  • fs.mkdtemp() : با استفاده از این متد میتونین یک دایرکتوری موقتی رو به وجود بیارید.
  • fs.open() : با استفاده از این متد میتونین یک فایل رو با یک flag مانند w یعنی خواندنی باز کرده و عمیات مورد نظرتون رو بر روی اون انجام بدین و بعد از اون با استفاده از fs.close اون رو ببندید.
  • fs.readdir() : با این متد میتونین محتویات یک دایرکتوری را بخوانید.
  • fs.readFile() : با این متد میتونین محتویات یک فایل را بخوانید. متد fs.read مربوط به این متد هست.
  • fs.readlink() : خواندن مقدار یک symbolic link
  • fs.realpath() : با استفاده از این متد میتونین مسیر فایل رو بصورت absolute یا کامل به دست بیارید. مثال زیر رو ببینید:
    const fs = require('fs');
    
    fs.realpath('file.txt', (err, path) => {
      if (err) {
        console.log(err);
      }
    
      console.log(path); // `/real/path/to/file.txt`
    });
  • fs.rename() : با استفاده از این متد میتونین یک فایل یا دایرکتوری رو تغییر نام دهید.
  • fs.rmdir() : با استفاده از این متد میتونین یک دایرکتوری رو حذف کنید.
  • fs.stat() : با استفاده از این متد میتونین اطلاعاتی در مورد فایل و وضعیت اون به دست بیارید. متدهای fstat و lstat نیز به این متد مربوط هستند.
  • fs.symlink() : با استفاده از این متد میتونین یک symbolic link رو به وجود بیارید.
  • fs.truncate() : با استفاده از این متد میتونین محتویات یک فایل رو به اندازه‌ای که میخواید کوتاه کنید و یا اون رو بصورت کامل خالی کنید.
  • fs.unlink() : با استفاه از این متد میتونین یک فایل یا symbolic link رو حذف کنید.
  • fs.watchFile() : با استفاده از این متد میتونین تغییرات وارد شده به یک فایل رو مانیتور کنید و زمانی که فایل مورد نظر تغییر داده شد، شما متوجه خواهید شد. ابزارهای معروف زیاد از این ویژگی استفاده کرده‌اند.
  • fs.unwatchFile() : این متد برای پایان دادن به watch کردن یک فایل مورد استفاده قرار می‌گیرد.
  • fs.writeFile() : با استفاده از این متد میتونین محتویات مورد نظرتون رو در یک فایل قرار بدین.

نکته‌ایی که در مورد متدهای بالا باید در نظر داشته باشید اینه که همه اونا بصورت پیش‌فرض Asynchronous هستند و با قرار دادن کلمه Sync در آخر اونا میتونین اونا رو بصورت Synchronous اجرا کنید.

برای مثال writeFile که در بالا معرفی کردیم Asynchronous هست و writeFileSync بصورت Synchronous اجرا میشه. این متدها به کلی روش اجرای برنامه رو تغییر میدن.

برای مثال میخوایم متد rename رو بررسی کنیم. وقتی که بصورت Asynchronous از متد rename استفاده میکنیم، باید از callback استفاده کنیم:

const fs = require('fs');

fs.rename('before.json', 'after.json', (err) => {
  if (err) {
    return console.error(err);
  }

  // done
});

اگر بخواید بصورت Synchronous از این متد استفاده کنیم، باید از try...catch برای مدیریت Error ها استفاده کنیم. مثال زیر رو ببینید:

const fs = require('fs'):

try {
  fs.renameSync('before.json', 'after.json');

  // done
} catch (err) {
  console.error(err);
}

زمانی که کدهای Synchronous اجرا میشن، تا زمانی که کار اونا به پایان نرسه بقیه کدها اجرا نمیشن و منتظر میمونن ولی در کدهای Asynchronous چنین اتفاقی نمیوفته.

در اینجا میتونین مستندات مربوط به fs module رو مشاهده کنید.

نویسنده
بسیار به طراحی وب علاقمندم و به سرعت در حال یادگیری تمام مباحث پیشرفته هستم و دوست دارم که به دیگران هم یاد بدهم.

نظرات کاربران

اولین دیدگاه این پست رو تو بنویس !

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :

 
گزارش مشکل