Writing یا نوشتن در فایلها در Node.js

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

Writing یا نوشتن در فایلها در Node.js

در این مطلب میخوایم یاد بگیریم که چطور میتونیم در Node.js متن مورد نظرمون رو در فایل قرار بدیم و به اصطلاح Writing یا نوشتن در فایلها رو مدیریت کنیم.

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

همونطور که میدونین ماژولهایی هستن که متعلق به Node.js هستن و همون موقع که Node رو نصب میکنید بر روی سیستم شما قرار میگیرن و میتونین از اونا استفاده کنید. مثلا ماژولهای fs یا path یا ... جزء این دسته از ماژولها قرار میگیرن.

هر کدوم از این ماژولها کار خاصی رو انجام میدن. مثلا ماژول fs یا file system مدیریت فایلها رو بر عهده داره و با استفاده از متدهای متنوع و قدرتمندی که در اختیارتون قرار میده، میتونین به راحتی فایلهای مختلف رو مدیریت کنید.

ما در این مطلب از همین ماژول fs برای نوشتن یا writing در فایلها استفاده میکنیم. ماژول fs یک متد بنام writeFile داره که به صورت Asynchronous اطلاعات مورد نظرتون رو در فایل مینویسه و قرار میده. وقتی میگیم که یک دستور Asynchronous هست به این معنی هست که جلوی اجرای برنامه رو نمیگیره و دستورات بعد از اون انجام میشن و وقتی که کار اون تموم شد، Callback تعریف شده رو فراخوانی میکنه و متوجه میشیم که Writing انجام شده است. کد زیر رو ببینید:

const fs = require('fs');

let lyrics = 'But still I\'m having memories of high speeds when the cops crashed\n' +  
             'As I laugh, pushin the gas while my Glocks blast\n' + 
             'We was young and we was dumb but we had heart';

// write to a new file named 2pac.txt
fs.writeFile('2pac.txt', lyrics, (err) => {  
    // throws an error, you could also catch it here
    if (err) throw err;

    // success case, the file was saved
    console.log('Lyric saved!');
});

همونطور که میبینید در ابتدا ماژول fs رو در فایل import کردیم. یک متغیر بنام lyrics ساختیم و متن مورد نظر برای بازنویسی رو در اون قرار دادیم. در خط 8 از متد writeFile استفاده کردیم. در بالا سه آرگومان رو به متد writeFile پاس دادیم که اولی نام و مسیر فایل مورد نظر و دومی اطلاعات مورد نظر برای بازنویسی و سومی هم Callback مورد نظر هست که در زمان اتمام کار یا در زمان ارور فراخوانی میشه و کارهای مورد نظر انجام میشه.

شما میتونین به راحتی encoding فایل هم با این متد مشخص کنید. بصورت زیر:

fs.writeFile('2pac.txt', 'Some other lyric', 'ascii', callback);

همونطور که دیدید به عنوان آرگومان سوم ascii رو پاس دادیم و encoding فایل مورد نظر رو مشخص کردیم. encoding‌های متداولی که استفاده میشه 'utf8', 'ascii', 'binary', 'hex', 'base64' ,'utf16le' هستن.

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

متد writeFile هم همانند بیشتر متدهای دیگه یک نمونه Synchronous بنام writeFileSync داره که اجرای برنامه رو متوقف میکنه و تا زمانی که کارش به پایان نرسه، به خط بعدی نمیره. استفاده از این متد بصورت زیر هست:

fs.writeFileSync('2pac.txt', 'Some other lyric', 'ascii');

همونطور که میبینید تنها فرقشون اینه که در بالا از callback استفاده نشده است. (Callback فقط مخصوص دستورات Asynchronous هست چون نمیدونیم که چه زمانی کار اونا تموم میشه و با استفاده از Callback میتونیم اون رو مدیریت کنیم)

به همین راحتی.

برای مطالعه بیشتر در این زمینه میتونین این لینک رو مطالعه کنید.

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

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

فلاح نژاد

سلام.
اول بابت اینکه کامنتم به مطلب ربطی ندارره عذرخواهی میکنم ولی یه سوال توی ذهنم هست که برای پرسیدنش روشی بجز کامنت گذاشتن پیدا نکردم
سوالم اینه شما تخصص تون چی هست و به چه زبان هایی تسلط دارید؟
اگر امکانش هست یه راه ارتباطی معرفی کنید تا اگر امکانش بود با شما در ارتباط باشیم

محمد اسفندیاری

سلام
میتونین ایمیل بزنید
[email protected]

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