برنامه نویسی و طراحی سایت

آموزش ماژول FS در Node.js + معرفی دوره آموزشی

آموزش ماژول FS در Node.js + معرفی دوره آموزشی

زبان برنامه نویسی جاوا اسکریپت مدت زمان زیادی است که از بهترین زبان‌های برنامه نویسی محسوب می‌شود، اما برای این زبان در ابتدا محدودیت‌هایی در توسعه سمت سرور وجود داشت. با ورد «نود جی اس» (Node.js) این محدودیت از بین رفت و هم‌اکنون با استفاده از آن توسعه برنامه‌های سمت سرور با جاوا اسکریپت کاملاً فراهم است. در این مطلب از مجله تم آف در مورد ماژول FS در Node.js که به عنوان «سیستم فایل» (File System) نود جی اس از آن یاد می‌شود، توضیحاتی مطلوبی همراه با مثال‌های عملی برای هر بخش ارائه خواهد شد. قبل از اینکه از این ماژول FS در نود جی اس سخن به میان آید ابتدا بهتر است در مورد خود نود جی اس و رسالت آن در دنیای توسعه وب توضیحاتی مختصر ارائه شود.

فهرست مطالب این نوشته
مقدمه و پیش درآمد آموزش ماژول FS در Node.js

نود جی اس چیست؟

پیش نیازهای آموزش ماژول FS در Node.js کدامند؟

ماژول FS در Node.js

ماژول نود جی اس چیست؟

آموزش ماژول FS در Node.js

نحوه ایجاد و نوشتن با ماژول اف اس در Node.js

استفاده از متد writeFile برای نوشتن و ایجاد فایل

استفاده از متد appendFile برای ایجاد و نوشتن در فایل

استفاده از متد open برای ایجاد و نوشتن در فایل

نحوه خواندن فایل با ماژول FS در Node.js

تغییر نام فایل با ماژول اف اس در نود جی اس چگونه انجام می شود؟

انتقال فایل با ماژول FS در Node JS

کپی کردن فایل با ماژول FS در نود جی اس

حذف فایل با ماژول FS در Node.js

نحوه تغییر مجوزها و مالکیت فایل با ماژول FS

نحوه ایجاد پیوند با ماژول FS در Node.js

نحوه مشاهده تغییرات فایل با ماژول FS در نود جی اس

کار با پوشه ها در ماژول FS نود جی اس

ساخت پوشه جدید با ماژول FS در نود جی اس

ایجاد دایرکتوری موقت با ماژول اف اس در Node.js

حذف دایرکتوری با ماژول سیستم فایل در نود جی اس

API های هم زمان و ناهمزمان

رسیدگی به خطاها در ماژول FS

سخن پایانی

faradars mobile

مقدمه و پیش درآمد آموزش ماژول FS در Node.js

در این بخش ابتدا برخی از پیش‌نیازها و مقدمات لازم برای آموزش ماژول FS در Node.js به طور خلاصه شرح داده می‌شود و سپس بلافاصله به سراغ بحث اصلی خواهیم رفت. لازم است در اینجا به این نکته اشاره شود که برای آموزش ماژول FS در Node.js یک دوره آموزشی اختصاصی در پلتفرم تم آف تولید و ارائه شده است که در صورت تمایل مخاطبان می‌توانند برای یادگیری ماژول FS در Node.js از آن استفاده کنند.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

نود جی اس چیست؟

Node.js نوعی محیط زمان اجرای جاوا اسکریپت منبع آزاد به حساب می‌آید که می‌تواند به صورت رایگان در سیستم‌عامل‌های اصلی مانند ویندوز، مک و لینوکس دانلود و نصب شود. محبوبیت آن در سال‌های اخیر به‌شدت افزایش یافته است و فرصت‌های هیجان‌انگیزی را برای توسعه‌دهندگان جاوا اسکریپت که به دنبال توسعه برنامه‌های سمت سرور هستند، ارائه می‌دهد.

آموزش مقدماتی نود جی اس Node.js
فیلم آموزش مقدماتی نود جی اس Node.js در تم آف

کلیک کنید

با Node.js می‌توان از جاوا اسکریپت برای برنامه نویسی سمت کلاینت و برنامه نویسی سمت سرور استفاده کرد. این بدان معناست که می‌توان برنامه‌های سریع، مقیاس‌پذیر و کارآمد را با استفاده از زبانی واحد توسعه داد. معماری رویداد محور Node.js امکان برنامه نویسی ناهمگام در جاوا اسکریپت را فراهم و این ویژگی آن را برای مدیریت اتصالات هم‌زمان و برنامه‌های بلادرنگ به گزینه‌ای عالی تبدیل می‌کند.

آموزش نود جی اس تم آف

Node.js به توسعه‌دهندگان جاوا اسکریپت این قدرت را می‌دهد تا مهارت‌های خود را گسترش دهند و طیف گسترده‌ای از برنامه‌های سمت سرور را بسازند. تطبیق‌پذیری و سهولت استفاده از آن، نود جی اس را به گزینه‌ای مناسب برای سازندگان اپلیکیشن تبدیل کرده و راه را برای چشم‌انداز شغلی جدیدی را در زمینه برنامه نویسی جاوا اسکریپت هموار کرده است.

در ادامه این مطلب به رسالت ماژول FS در Node.js یا به عبارتی به سیستم مدیریت فایل در Node.js پرداخته خواهد شد. با APIهایی که نود جی اس در اختیار توسعه‌دهندگان قرار می‌دهد، پیمایش در سیستم فایل به سرعت انجام خواهد شد و توسعه‌دهنده قادر است تا بسیاری از عملیات پیچیده را بدون زحمت انجام دهد. تسلط بر این مهارت‌ها، نه تنها بهره‌وری توسعه‌دهنده را افزایش می‌دهد، بلکه به او قدرت خواهد داد تا از پتانسیل کامل تعاملات سیستم فایل نیز استفاده کند.

پیش نیازهای آموزش ماژول FS در Node.js کدامند؟

قبل از ورود به دنیای سیستم فایل Node.js، چند پیش‌نیاز وجود دارد که باید آن‌ها در نظر داشت. اول از همه، باید Node.js را روی سیستم‌عامل خود نصب کرد. شگفتی Node.js در سادگی آن نهفته است، زیرا می‌توان آن را به راحتی دانلود و بدون نیاز به سخت‌افزار پیچیده بر روی کامپیوتر با سیستم‌عامل‌های مختلف نصب کرد. علاوه بر این، داشتن درک اولیه از جاوا اسکریپت برای کار با ماژول‌های Node.js مانند سیستم فایل FS ضروری است. همچنین آشنایی با مفاهیمی مانند توابع جاوا اسکریپت، توابع «فراخوانی» (Callback) و «وعده‌ها» (Promise) در جاوا اسکریپت، درک کاربران از این موضوع را تسریع می‌کند و به آن‌ها این امکان را می‌دهد که از ماژول اف اس در Node.js نهایت استفاده را ببرند.

آموزش جاوا اسکریپت JavaScript
فیلم آموزش جاوا اسکریپت JavaScript در تم آف

کلیک کنید

ماژول FS در Node.js

در توسعه برنامه‌های فول‌استک، مدیریت فایل‌ها و دایرکتوری‌ها ضرورتی اساسی است. خواه برنامه به کاربران امکان آپلود تصاویر، رزومه‌ها یا فایل‌های دیگر را در سرور بدهد یا برنامه نیاز به توانایی خواندن فایل‌های پیکربندی، جابجایی فایل‌ها یا حتی تغییر مجوزهای آن‌ها را به صورت برنامه‌ای داشته باشد، مدیریت سیستم فایل نقش مهمی ایفا می‌کند.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

خوشبختانه، با ماژول FS در نود جی اس تمام این وظایف به طور یکپارچه انجام می‌شوند. این ماژول قدرتمند طیف وسیعی از APIها را ارائه می‌دهد که به توسعه‌دهنده این امکان را خواهتد داد تا بدون زحمت با سیستم‌های فایل تعامل داشته باشد. APIها ابزارهایی همه‌کاره هستند و گزینه‌ها و پیکربندی‌های قابل تنظیمی را برای انجام عملیات با نیازهای خاص برنامه ارائه می‌دهند.

پیش نیازهای ماژول FS در Node.js

علاوه بر این، بسته به نیاز برنامه، این امکان وجود دارد که از عملیات فایل «ناهمگام» (Asynchronous) و «همگام» (Synchronous) استفاده شود. قبل از عمیق‌تر شدن در ماژول فایل سیستم در نود جی اس، نگاهی گذرا بر خود مفهوم ماژول Node.js خالی از لطف نیست.

مطلب پیشنهادی:

آموزش Node.js: کار با فایل توسط ماژول fs — بخش نهم

شروع مطالعه

 

ماژول نود جی اس چیست؟

ماژول‌های Node.js به عنوان گنجینه‌ای از عملکردهای قدرتمند ارائه شده از طرف API‌ها، آماده استفاده به وسیله برنامه‌های مصرف کننده هستند. به عنوان مثال، ماژول FS در نود جی اس به توسعه‌دهنده اجازه می‌دهد تا به طور یکپارچه با سیستم فایل تعامل داشته باشد. به طور مشابه، «ماژول HTTP» دامنه‌ای از امکانات را باز می‌کند و توسعه‌دهنده را قادر می‌سازد سروری ایجاد کرده و عملیات مختلف دیگر را انجام دهد.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

با Node.js، مجموعه‌ای از ماژول‌ها در دسترس هستند که پیچیدگی‌های سطح پایین توسعه برنامه را از بین می‌برند و به کاربران این قدرت را می‌دهند تا روی توسعه قسمت‌های اصلی و کاربردی برنامه تمرکز کنند. از Node.js نسخه «١۴» به بعد، توسعه‌دهندگان آزادی ایجاد و استفاده از ماژول‌های Node.js را به دو روش مجزا در اختیار دارند: «ماژول‌های CommonJS» یا همان CJS و «ESM» یا همان «MJS» روش‌های نام برده هستند. در این مطلب، در درجه اول سبک CommonJS بررسی خواهد شد و اینجا، جایی است که جادوی «برنامه نویسی ماژولار» (Modular Programming) را از نزدیک خواهیم دید.

آموزش ماژول FS در فریمورک Node.js

آموزش ماژول FS در Node.js

این بخش مخصوص کار با فایل‌ها در Node.js است. این شامل انجام عملیات مختلف بر روی فایل‌ها و دایرکتوری‌ها (پوشه‌ها) خواهد بود. برای شروع کار، باید ماژول FS را به فایل منبع وارد کرد.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

در شیوه یا سبک CommonJS با استفاده از متد require

 می‌توان به این مهم دست پیدا کرد. مثال زیر مفهوم گفته‌ شده را بیان می‌کند.

const { writeFile } = require('fs/promises');

در «سینتکس» (Syntax) بالا به طور خاص، متد writeFile

 از بسته FS/promises

 ایمپورت شده است. همچنین در قطعه کد بالا از «متدهای وعده» (Promises Method) در جاوا اسکریپت استفاده شده، زیرا آن‌ها جدیدترین موارد اضافه شده به ماژول FS در Node.js هستند. آن‌ها راحتی کار کردن یکپارچه با کلمات کلیدی async/wait

 را ارائه می‌دهند که منجر به کدهای واضح‌تر و مختصرتر می‌شود. علاوه بر متدهای وعده، گزینه‌های جایگزین دیگر مانند متدهای هم‌زمان synchronous

 و توابع callback

 نیز در مثال‌های بعدی بررسی خواهند شد.

نحوه ایجاد و نوشتن با ماژول اف اس در Node.js

فایل را می‌توان با سه متد مختلف ایجاد کرد و در آن نوشت. این سه متد به صورت موارد زیر هستند:

  • متد writeFile
  •  متد appendFile
  • متد openFile

مهم نیست که کدام رویکرد استفاده می‌شود. برای این کار باید به سادگی مسیر فایل و محتوای مورد نظر را برای نوشتن ارائه داد. اگر فایل از قبل وجود داشته باشد، این متدها به‌خوبی جایگزین محتوای موجود آن می‌شوند. از سوی دیگر، اگر فایل هنوز ساخته نشده است، این متدها به طور یکپارچه فایلی جدید ایجاد می‌کنند.

مطلب پیشنهادی:

آموزش Node.js: درخواست های HTTP و وب سوکت — بخش هشتم

شروع مطالعه

 

استفاده از متد writeFile برای نوشتن و ایجاد فایل

قطعه کد زیر استفاده از متد writeFile

را برای ایجاد و نوشتن در فایل نشان می‌دهد. برای انجام این کار باید فایلی به نام فرضی createFile.js

 به منظور اجرای کد مربوطه ایجاد شود.

const { writeFile } = require('fs/promises');
async function writeToFile(fileName, data) {
  try {
    await writeFile(fileName, data);
    console.log(`Wrote data to ${fileName}`);
  } catch (error) {
    console.error(`Got an error trying to write the file: ${error.message}`);
  }
}

در مثال فوق از کلمه کلیدی await

 برای فراخوانی متد استفاده شده است، زیرا یک «Promise» یا همان «وعده» جاوا اسکریپت را برمی‌گرداند. وعده موفق باعث انجام عمل ایجاد و نوشتن در فایل می‌شود. همچنین در قطعه کد بالا، بلوک try-catch

 برای رسیدگی به خطاها در صورت رد شدن وعده استفاده شده است. اکنون می‌توان تابع writeToFile

 را به صورت زیر فراخوانی کرد.

writeToFile('test.txt', 'سلام. به مجله تم آف خوش آمدید');

اکنون با باز کردن ترمینال و اجرای دستور زیر، عملیات انجام خواهد شد.

node createFile.js

حال فایلی به نام test.txt

 با دستور فوق به صورت زیر تولید شده که حاوی جمله یا متن مد نظر ما است.

ماژول fs در نود جی اس

استفاده از متد appendFile برای ایجاد و نوشتن در فایل

همان‌طور که از نام آن معلوم است، استفاده اصلی از این متد برای افزودن یا ویراش فایل مدنظر خواهد بود ولی با این حال می‌توان از آن برای ایجاد فایل هم استفاده کرد.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

برای مثال در تابع زیر از متد appendFile

 برای نوشتن در فایلی با پرچم w

 به معنای «نوشتن» (Write) استفاده شده است.

const { appendFile} = require('fs/promises');

async function appendToFile(fileName, data) {
  try {
    await appendFile(fileName, data, { flag: 'w' });
    console.log(`Appended data to ${fileName}`);
  } catch (error) {
    console.error(`Got an error trying to append the file: {error.message}`);
  }
}

اکنون می‌توان تابع فوق را به صورت زیر فراخوانی کرد:

appendToFile('test1.txt', 'آموزش ماژول سیستم مدیریت فایل در نود جی اس - مجله تم آف');

حال این بار با اجرای دستور node createFile.js

 فایلی جدید به نام text1.js

 ایجاد خواهد شد که حاوی محتوای زیر است:

سیستم مدیریت فایل در نود جی اس

استفاده از متد open برای ایجاد و نوشتن در فایل

آخرین متدی که برای ایجاد و نوشتن روی فایل در ماژول اف اس در Node.js بررسی خواهد شد، متد open

 است.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

می‌توان فایل را با استفاده از پرچم w

 (برای نوشتن) باز کرد که مثال زیر این موضوع را بیان می‌کند.

const { open} = require('fs/promises');

async function openFile(fileName, data) {
  try {
    const file = await open(fileName, 'w');
    await file.write(data);
    console.log(`Opened file ${fileName}`);
  } catch (error) {
    console.error(`Got an error trying to open the file: {error.message}`);
  }
}

حال می‌توان تابع را به صورت زیر فراخوانی کرد:

openFile('test2.txt', 'آموزش نود جی اس رایگان - مجله تم آف');

اکنون با جرای دستور node createFile.js

 در ترمینال خروجی به صورت زیر در فایل جدیدی به نام test2.txt

 تولید خواهد شد.

نحوه کار با ماژول fs در node.js

نحوه خواندن فایل با ماژول FS در Node.js

تا به اینجا، آموزش ایجاد و همچنین نوشتن در فایل با ماژول FS در نود جی اس آموزش داده شد و حال نوبت به آموزش خواندن فایل با آن است. این کار با استفاده از متد readFile

 در سیستم مدیریت فایل نود جی اس امکان‌پذیر است.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

در ادامه مثالی برای این هدف بیان خواهد شد. برای این منظور ابتدا باید فایلی با نام فرضی readThisFile.js

 ساخته و قطعه کد زیر در آن قرار داده شود.

// readThisFile.js
const { readFile } = require('fs/promises');
async function readThisFile(filePath) {
  try {
    const data = await readFile(filePath);
    console.log(data.toString());
  } catch (error) {
    console.error(`Got an error trying to read the file: {error.message}`);
 }
}

حالا هر سه فایلی خوانده خواهند شد که قبلاً با فراخوانی تابع readThisFile

 ایجاد شده بودند. قطعه کد فراخوانی تابع به صورت زیر است.

readThisFile('test.txt');
readThisFile('test1.txt');
readThisFile('test2.txt');

اکنون با اجرای دستور node readThisFile.js

 ، خروجی به صورت تصویر زیر نمایان خواهد شد.

خواندن فایل با ماژول FS در Node.js

توجه به این نکته ضروری است که متد readFile

 فایل را به صورت ناهم‌زمان می‌خواند. در نتیجه، ترتیب خواندن فایل و ترتیب دریافت پاسخ برای چاپ در کنسول ممکن است یکسان نباشد. برای اطمینان از ترتیب مورد نظر، باید از نسخه هم‌زمان متد readFile

استفاده کرد.

تغییر نام فایل با ماژول اف اس در نود جی اس چگونه انجام می شود؟

بحث مهم دیگر در این آموزشِ ماژول FS در Node.js، بحث تغییر نام فایل است. برای تغییر نام فایل، از متُدی به نام rename

 به منظور تغییر نام در ماژول FS استفاده خواهد شد.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

برای مثال اگر فایلی با نام فرضی Faradars.tex

 وجود داشته باشد و بخواهیم نام آن را تغییر دهیم، باید به صورت زیر عمل کرد.

const { rename } = require('fs/promises');

async function renameFile(from, to) {
  try {
    await rename(from, to);
    console.log(`Renamed ${from} to ${to}`);
  } catch (error) {
    console.error(`Got an error trying to rename the file: ${error.message}`);
  }
}

قطعه کد بالا در فایلی با نام فرضی renameFile.js

 ذخیره شده است. طبق قطعه کد بالا، متد rename

 دو آرگومان می‌گیرد. یکی فایل با نام منبع و دیگری فایل با نام فایل مقصد است. حال تابع بالا برای تغییر نام فایل به صورت زیر فراخوانی خواهد شد.

const oldName = "Faradars.txt";
const newName = "blog.Faradars.txt";
renameFile(oldName, newName);

اکنون با اجرای دستور node renameFile.js

 در ترمینال خروجی به صورت زیر خواهد بود و فایل از Faradars.txt

 به blog.Faradars.txt

 تغییر نام پیدا خواهد کرد.

آموزش رایگان فایل سیستم نود جی اس

انتقال فایل با ماژول FS در Node JS

برای انتقال فایل از یک دایرکتوری به دایرکتوری دیگر، می‌توان از متُد rename

 استفاده کرد که در این جا اساساً فقط مسیر فایل را تغییر نام می‌دهد. در این حالت، انتقال فایل با تغییر نام مسیر آن به مقصد مورد نظر حاصل می‌شود.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

برای نشان دادن این موضوع، باید مراحل زیر را دنبال کرد:

  1. دو پوشه به نام‌های « from

     » و « to

     » در مسیر مورد نظر برای مثال باید ایجاد شوند.

  2. در داخل پوشه « from

    »، باید فایلی به نام « move-me.txt

     » ساخت.

  3. همچنین فایلی به نام moveFile.js

     ایجاد و قطعه کد زیر را به آن باید اضافه کرد.

const { rename } = require('fs/promises');
const { join } = require('path');
async function moveFile(from, to) {
  try {
    await rename(from, to);
    console.log(`Moved ${from} to ${to}`);
  } catch (error) {
    console.error(`Got an error trying to move the file: ${error.message}`);
  }
}

در قطعه کد ارائه شده بالا، متد join

 از ماژول path

 ایمپورت شده است، زیرا این کار به کاربر امکان می‌دهد تا مسیرهای فایل معتبری را با پیوستن چندین بخش مسیر به یکدیگر بسازد. ماژول path

نوعی ماژول داخلی در Node.js است که ابزارهایی را برای کار با مسیرهای فایل و دایرکتوری ارائه می‌دهد.

با استفاده از متد join

، می‌توان مطمئن شد که مسیرهای فایل‌های مبدأ و مقصد بدون در نظر گرفتن سیستم‌عامل زیربنایی به درستی شکل گرفته‌اند. سیستم‌عامل‌های مختلف از قراردادهای متفاوتی برای نمایش مسیرهای فایل استفاده می‌کنند، مانند استفاده از «اسلش‌های رو به جلو» (/) یا «اسلش‌های رو به عقب» () به عنوان جداکننده و متد join

از این تفاوت‌ها مراقبت می‌کند و مسیری معتبر تولید خواهد کرد که به طور مداوم در بین پلتفرم‌های مختلف کار می‌کند.

const fromPath = join(__dirname, "from", "move-me.txt");
const destPath = join(__dirname, "to", "move-me.txt");
moveFile(fromPath, destPath);

حال اگر اسکریپت moveFile.js

 با دستور Nod moveFile.js

 اجرا شود، فایل move-me.txt

 از دایرکتوری From

 به دایرکتوری to

 منتقل خواهد شد.

FS در فریمورک نود جی اس

کپی کردن فایل با ماژول FS در نود جی اس

این بخش از آموزش ماژول FS در Node.js مختص نحوه کپی کردن فایل است. برای این هدف از متد copyFile

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

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

قطعه کد زیر به منظور آموزش این عملیات ارائه شده است.

const { copyFile } = require('fs/promises');
const { join } = require('path');
async function copyAFile(from, to) {
  try {
    await copyFile(from, to);
    console.log(`Copied ${from} to ${to}`);
  } catch (err) {
    console.error(`Got an error trying to copy the file: ${err.message}`);
  }
}

حال می‌توان عمل کپی را به صورت زیر انجام داد:

copyAFile('test.txt', 'test-copy.txt');

با اجرای دستور node copyFile.js

 کد بالا محتوای test.txt

 را در فایل test-copy.txt

 کپی می‌کند. این یعنی فایل جدیدی به نام test-copy.txt

ایجاد خواهد شد که حاوی محتوای test.txt

است.

آموزش نود جی اس تم آف

روش گفته شده فقط برای انجام عملیات کپی روی یک فایل است. حال در ادامه، اجرای این عمل برای چندین فایل به صورت هم‌زمان آموزش داده خواهد شد. برای این هدف می‌توان از Promise.all API

 برای اجرای هم‌زمان چندین وعده به صورت زیر استفاده کرد.

async function copyAll(fromDir, toDir, filePaths) {
  return Promise.all(filePaths.map(filePath => {
   return copyAFile(join(fromDir, filePath), join(toDir, filePath));
  }));
}

حال می‌توان ارائه تمام مسیرهای فایل را برای کپی کردن از یک دایرکتوری به دایرکتوری دیگر به صورت زیر انجام داد.

copyFiles('from', 'to', ['copyA.txt', 'copyB.txt']);

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

مطلب پیشنهادی:

نصب سرویس Node.js روی وب سرور | راهنمای جامع

شروع مطالعه

 

حذف فایل با ماژول FS در Node.js

برای حذف فایل با استفاده از ماژول FS در Node.js می‌توان از متد unlink

 به صورت زیر استفاده کرد:

const { unlink } = require('fs/promises');
async function deleteFile(filePath) {
  try {
    await unlink(filePath);
    console.log(`Deleted ${filePath}`);
  } catch (error) {
    console.error(`Got an error trying to delete the file: ${error.message}`);
  }
}

اکنون با افزودن قطعه کد زیر به کدهای بالا و با اجرای دستور مربوطه در ترمینال فایل مد نظر از دایرکتوری حذف خواهد شد.

deleteFile('delete-me.txt');

نحوه تغییر مجوزها و مالکیت فایل با ماژول FS

اگر نیاز به تغییر مجوزهای فایل وجود داشته باشد، می‌توان از متد chmod

 از ماژول FS/promises

 در Node.js استفاده کرد. این متد به کاربر اجازه می‌دهد تا مجوزهای فایل را تغییر دهد.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

در زیر نمونه کدی آورده شده است که نحوه تغییر مجوزهای فایل را با استفاده از متد chmod

نشان می‌دهد.

const { chmod } = require('fs/promises');
async function changePermission(filePath, permission) {
  try {
    await chmod(filePath, permission);
    console.log(`Changed permission to ${permission} for ${filePath}`);
  } catch (error) {
    console.error(`Got an error trying to change permission: ${error.message}`);
  }
}

برای این هدف، باید مطمئن شد که مجوزهای لازم برای اصلاح فایل را داشته و مسیر فایل صحیح است. مقدار مجوز باید با استفاده از نماد بیتی که نشان دهنده مجوزهای فایل مورد نظر است، مشخص شود.

changePermission('permission.txt', 0o400);

خروجی قطعه کد بالا با اجرای node chmod.js

 به صورت زیر خواهد بود:

تغییر مجوز فایل با ماژول FS

مشابه مجوز فایل، همچنین می‌توان مالکیت فایل را با ماژول FS در نود جی اس تغییر داد. برای این هدف از متدی به نام chown

 به صورت زیر استفاده خواهد شد.

const { chown } = require('fs/promises');

async function changeOwnership(filePath, userId, groupId) {
  try {
    await chown(filePath, userId, groupId);
    console.log(`Changed ownership to ${userId}:${groupId} for ${filePath}`);
  } catch (error) {
    console.error(`Got an error trying to change ownership: ${error.message}`);
  }
}

سپس تابع باید با مسیر فایل، شناسه کاربری و شناسه گروه به صورت زیر فراخوانی شود.

changeOwnership('ownership.txt', 1000, 1010);

حال با اجرای دستور node chown.js

 در ترمینال مالکیت فایل تغییر خواهد کرد.

آموزش کار با فایل در نود جی اس

نحوه ایجاد پیوند با ماژول FS در Node.js

برای ایجاد «پیوندی نمادین» (Symlink) با استفاده از ماژول سیستم فایل Node.js، می‌توان از متد symlink

 استفاده کرد. این متد به کاربران امکان می‌دهد پیوندی به فایل یا پوشه مورد نظر ایجاد کنند.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

در اینجا قطعه کد نحوه ایجاد پیوند نمادین با استفاده از متد symlink

آورده شده است.

const { symlink } = require('fs/promises');
const { join } = require('path');
async function createSymlink(target, path, type) {
  try {
    await symlink(target, path, type);
    console.log(`Created symlink to ${target} at ${path}`);
  } catch (error) {
    console.error(`Got an error trying to create the symlink: ${error.message}`);
  }
}

در قطعه کد بالا، تابع createSymlink

 تعریف شده است که سه پارامتر target

 ، path

  و type

 را می‌گیرد.

  1. پارامتر target

    نشان دهنده مسیر فایل یا پوشه مورد نظر است که کاربر می‌خواهد پیوندی نمادین برای آن ایجاد کند.

  2. path

    نشان دهنده مسیری است که کاربر می‌خواهد پیوند را در آن ایجاد کند.

  3. پارامتر type

    نوع رابط پیوندی را مشخص خواهد کرد که باید ایجاد شود. نوع آن می‌تواند «file» یا «dir» باشد.

در داخل تابع، متد symlink

به صورت ناهم‌زمان با استفاده از await

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

حال با استفاده از تابع زیر پیوند فرضی ایجاد خواهد شد.

createSymlink('join(__dirname, from, symMe.txt)', 'symToFile', 'file');

حال با اجرای دستور مربوط‌ه در ترمینال، پیوند نمادین یا فرضی ایجاد خواهد شد.

نحوه مشاهده تغییرات فایل با ماژول FS در نود جی اس

برای مشاهده تغییرات روی فایل در Node.js، می‌توان از متد watch

 ارائه شده به وسیله ماژول سیستمِ فایلِ نود جی اس استفاده کرد. این متد به کاربران امکان می‌دهد تغییرات و رویدادها را نظارت کنند و راهی را به منظور ضبط و ممیزی آن‌ها برای بررسی بعدی فراهم می‌کند. اگرچه متدی جایگزین به نام watchFile

 برای این کار نیز وجود دارد، اما به اندازه متد watch

کارآمد نیست.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

تا کنون در این آموزش ماژول اف اس در Node.js از کلمات کلیدی async/wait

 استفاده شده است، حال در این جا استفاده از تابع callback

 با مثالی در ادامه بررسی خواهد شد. با استفاده از متد watch

، می‌توان مسیر فایل و تابع callback

را به عنوان آرگومان ارسال کرد. هر زمان که فعالیتی در فایل رخ می‌دهد، تابع callback

به طور خودکار فراخوانی می‌شود. قطعه کد آنچه که گفته شد به صورت زیر است.

const fs = require('fs');
function watchAFile(file) {
  fs.watch(file, (event, filename) => {
    console.log(`${filename} file Changed`);
  });
}

پارامتر رویداد ارائه شده به تابع callback

به کاربر امکان می‌دهد اطلاعات بیشتری در مورد فعالیت‌های خاصی که انجام شده است جمع‌آوری کند. می‌توان از آن برای تشخیص تغییر، تغییر نام یا حتی پیگیری حذف فایل نیز استفاده کرد.

در کدهای بالا و در داخل تابع، متد FS.watch

 فراخوانی می‌شود که پارامتر فایل و یک تابع callback

را به عنوان آرگومان ارسال می‌کند. وقتی هر فعالیتی مانند تغییر، تغییر نام یا حذف روی فایل رخ می‌دهد، تابع پاسخ به callback

ارائه شده فعال می‌شود. تابع callback

دو پارامتر را دریافت می‌کند: رویداد و نام فایل. پارامتر رویداد به کاربر در مورد نوع فعالیتی که رخ داده است اطلاع می‌دهد، در حالی که پارامتر filename

 نام فایل مرتبط با رویداد را ارائه خواهد داد.

با استفاده از این رویکرد، هر زمان که یک رویداد تغییر در فایل مشاهده شده شناسایی شود، تابع callback

فراخوانی می‌شود و پیامی را نشان می‌دهد مبنی بر اینکه که کدام فایل تغییر کرده است. حال با ارسال نام فایل مد نظر به عنوان آرگومان، عملیات بازبینی تغییرات انجام خواهد شد.

watchAFile('test.txt');

حال با اجرای دستور node watc.js

 قطعه کد بالا اجرا خواهد شد و تغییرات صورت گرفته برای فایل test

  به صورت زیر قابل مشاهده خواهد بود.

سیستم مدیریت فایل در node.js

کار با پوشه ها در ماژول FS نود جی اس

کار با «دایرکتوری‌ها» (پوشه‌ها) در Node.js راهی عالی برای مدیریت داده‌ها و فایل‌ها است. با متدها و عملیات مناسب، می‌توان به راحتی پوشه‌ها را تغییر نام داد و یا آن‌ها را منتقل و کپی کرد. علاوه بر این، عملیات منحصربه‌فردی به طور خاص برای دایرکتوری‌ها وجود دارد که در این بخش از آموزش ماژول FS در Node.js به آن خواهیم پرداخت.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

ساخت پوشه جدید با ماژول FS در نود جی اس

برای ساخت دایرکتوری جدید در ماژول FS از متد mkdir

 استفاده می‌شود. برای این هدف باید نام دایرکتوری مد نظر را به عنوان آرگومان ارسال کرد. قطعه کد انجام این کار به صورت زیر است.

const { mkdir } = require('fs/promises');
async function createDirectory(path) {
  try {
    await mkdir(path);
    console.log(`Created directory ${path}`);
  } catch (error) {
    console.error(`Got an error trying to create the directory: ${error.message}`);
  }
}

اکنون می‌توان تابع createDirectory

 را با مسیر دایرکتوری به صورت زیر فراخوانی کرد.

createDirectory('Test-directory');

حال با اجرای دستور node Createdirectory.js

 ، پوشه جدید به صورت زیر ساخته خواهد شد.

آموزش FS در نود جی اس

ایجاد دایرکتوری موقت با ماژول اف اس در Node.js

ایجاد دایرکتوری موقت با ماژول FS در نود جی اس نیز بسیار آسان است. برای این کار می‌توان از متد mkdtemp()‎

 استفاده کرد. برای این هدف باید محل دایرکتوری سیستم عامل را با استفاده از متد tmpdir()‎

 از ماژول os

 استفاده کرد.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

هنگامی که مسیر دایرکتوری موقت یافت شد، از متد ‎ mkdtemp()‎

برای ایجاد پوشه موقت جدید می‌توان استفاده کرد. با این کار می‌توان به راحتی دایرکتوری موقت با ماژول FS ایجاد کرد.

const { mkdtemp } = require('fs/promises');
const { join } = require('path');
const { tmpdir } = require('os');
async function createTemporaryDirectory(fileName) {
  try {
    const tempDirectory = await mkdtemp(join(tmpdir(), fileName));
    console.log(`Created temporary directory ${tempDirectory}`);
  } catch (error) {
    console.error(`Got an error trying to create the temporary directory: ${error.message}`);
  }
}

حال با فراخوانی تابع زیر و اجرای دستور node Temprary-Directory.js

 در ترمینال، پوشه موقت به صورت زیر ایجاد خواهد شد.

createTemporaryDirectory('node-temp-file-');
ماژول FS در نود جی اس چیست؟

نکته: همان‌طور که در تصویر بالا قابل مشاهده است، Node.js شش کاراکتر تصادفی را در انتهای نام پوشه موقت ایجاد شده اضافه می‌کند تا آن را منحصربه‌فرد نگه دارد.

حذف دایرکتوری با ماژول سیستم فایل در نود جی اس

حذف دایرکتوری با ماژول FS با استفاده از متد‎ rmdir()

 امکان‌پذیر است و قطعه کد انجام این کار در ادامه آمده است.

const { rmdir } = require('fs/promises');
async function deleteDirectory(path) {
  try {
    await rmdir(path);
    console.log(`Deleted directory ${path}`);
  } catch (error) {
    console.error(`Got an error trying to delete the directory: ${error.message}`);
  }
}

با فراخوانی تابع زیر و ارسال نام پوشه به عنوان آرگومان، امکان حذف پوشه با ماژول FS در نود جی اس فراهم خواهد شد.

deleteDirectory('new-directory-renamed');

حال با اجرای دستور مربوطه، پوشه یا دایرکتوری مد نظر حذف خواهد شد.

API های هم زمان و ناهمزمان

APIهای هم‌زمان و ناهم‌زمان دو نوع متد متفاوتی هستند که به وسیله آن‌ها برنامه می‌تواند به داده‌ها دسترسی داشته باشد.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

API‌های ناهم‌زمان را می‌توان زمانی استفاده کرد که نیاز به پردازش موازی عملیات داشته باشیم و برای ادامه عملیات بعدی نیازی به خروجی عملیاتی دیگر ندارد. به عنوان مثال، هنگام کار با ماژول FS در محیط زمان اجرای Node.js، می‌توان از متد‌های async

 مانند readFile()‎

 برای پردازش هم‌زمان چندین فایل استفاده کرد.

از سوی دیگر، APIهای هم‌زمان وقتی استفاده می‌شوند که مانند هنگام خواندن چندین فایل، کاربر نیاز داشته باشد عملیات را یکی پس از دیگری پردازش کند. در این حالت می‌توان از متد readFileSync()

 ماژول FS به صورت زیر استفاده کرد.

const { readFileSync } = require('fs');
function readFileSynchronously(path) {
  try {
    const data = readFileSync(path);
    console.log(data.toString());
  } catch (error) {
    console.error(error);
  }
}

بسته FS/promises

 نیازی به استفاده از متد ‎ readFileSync()

 ندارد، زیرا این متد ناهم‌زمان نیست. بنابراین، می‌توان به سادگی تابع زیر را بدون نیاز به متد readFileSync()

 فراخوانی کرد.

readFileSynchronously('test.txt');
readFileSynchronously('test1.txt');
readFileSynchronously('test2.txt');

حال با اجرای دستور node readFileSync.js

 در ترمینال، هر سه فایل test

 ، test1

  و test2

 خوانده خواهند شد.

فیلم آموزش ماژول FS

ماژول سیستم فایل Node.js متدهای مختلفی را برای خواندن فایل‌ها ارائه می‌دهد. هنگام استفاده از توابع read

 ، فایل‌ها به ترتیبی خوانده خواهند شد که فراخوانی شده‌اند. برای سایر عملیات، ماژول سیستم فایل در نود جی اس نوعی متد هم‌زمان ارائه می‌دهد، با این حال توصیه می‌شود از متد‌های ناهمزمان برای اجرای موازی استفاده شود. این کار به اطمینان از اجرای روان همه کارها و به حداکثر رساندن کارایی کمک می‌کند.

مطلب پیشنهادی:

آموزش Node.js: برنامه نویسی ناهمگام و Callback — بخش هفتم

شروع مطالعه

 

رسیدگی به خطاها در ماژول FS

هنگام کار با فایل‌ها یا دایرکتوری‌ها، بروز خطاها اجتناب‌ناپذیر هستند و آمادگی برای رسیدگی به آن‌ها در هنگام بروز این خطاها کاری ضروری محسوب می‌شود. برای مثال اگر نتوان فایل را پیدا کرد یا اجازه نوشتن در آن وجود نداشته باشد، احتمالاً خطایی رخ داده است.

آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js
فیلم آموزش ماژول اف اس در نود جی اس – کار با فایل توسط ماژول fs در Node.js در تم آف

کلیک کنید

برای جلوگیری یا کاهش خطا، استفاده از بلوک try-catch

 هنگام فراخوانی متدها مهم است. در صورت بروز خطا، کنترل به بلوک try-catch

منتقل می‌شود و به برنامه نویس امکان می‌دهد مشکل را برطرف کند.

سخن پایانی

ماژول سیستم فایل در Node.js ابزاری مفید برای مدیریت وظایف سطح پایین و عملیات فایل است. با ماژول FS می‌توان عملیات مختلفی را روی فایل‌ها و دایرکتوری‌ها انجام داد. عملیاتی مانند ایجاد، تغییر نام، حذف، کپی و غیره از مهم‌ترین این عملیات هستند که در این مطلب از مجله تم آف به صورت عملی بیان شدند.

مجموعه آموزش جاوا اسکریپت (JavaScript)
فیلم مجموعه آموزش جاوا اسکریپت (JavaScript) در تم آف

کلیک کنید

همه متدها را می‌توان به صورت ناهمزمان با استفاده از Promise در جاوا اسکریپت یا توابع Callback یا در صورت نیاز به صورت هم‌زمان فراخوانی کرد. با این حال بسیار مهم است که هر بار که با متدها کار می‌شود، خطاها را با بلوک try-catch

کنترل کنیم. همچنین متدهای ناهمزمان باید همیشه بر متدهای هم‌زمان ترجیح داده شوند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.