کار با فایل ها یکی از رایج ترین کارهایی است که یک برنامه انجام می دهد، بنابراین با کتابخانه کمکی Node در زمان و تلاش خود صرفه جویی کنید.
یکی از ویژگی های داخلی Node.js دستکاری سیستم فایل سیستم عامل با استفاده از ماژول fs است. این ماژول Node.js شامل بسیاری از توابع مفید برای کار با فایل ها و دایرکتوری ها است.
فایل ها به سادگی به عنوان اشیاء پایدار یا تکه های داده ای شناخته می شوند که معمولاً در یک رسانه سخت به نام دیسک یا حافظه ذخیره می شوند. فایل ها می توانند انواع مختلفی داشته باشند، از فایل های متنی گرفته تا فایل های تصویری، فایل های صوتی و بسیاری موارد دیگر.
بنابراین، سیستم فایل چیست و چگونه می توانید به راحتی با سیستم فایل سیستم عامل در Node.js تعامل داشته باشید؟
فایل سیستم چیست؟
یک سیستم فایل تعریف می کند که چگونه یک سیستم عامل می تواند فایل ها را به همراه سایر عملیات شناسایی، سازماندهی، ذخیره و دسترسی داشته باشد.
سیستم فایل یک سیستم عامل همچنین کار گروه بندی فایل ها را در مجموعه هایی به نام دایرکتوری ها یا پوشه ها انجام می دهد. فایلها و دایرکتوریهای معمولی رایجترین بخشهای یک سیستم فایل هستند که اغلب در میان بسیاری دیگر با آنها تعامل دارند.
برخی از نمونههای سیستم فایل شامل سیستم فایل فناوری جدید (NTFS)، سیستم فایل یونیکس (UFS) و سیستم فایل سلسله مراتبی (HFS) هستند.
Node.js fs Module چیست؟
ماژول Node.js fs یک کتابخانه داخلی است که توسط Node.js برای کار با سیستم فایل هر سیستم عاملی که از Node پشتیبانی می کند ارائه شده است. ماژول fs به راحتی قابل دسترسی است و کتابخانه ای است که برای عملیات فایل مانند خواندن از فایل ها یا نوشتن داده ها بر روی فایل ها در Node.js استفاده می شود.
معمولاً با ماژول های مسیر و سیستم عامل برای انجام عملیات های مختلف روی فایل ها استفاده می شود. برای استفاده از ماژول fs در برنامه های خود، می توانید آن را مانند کد زیر به کد منبع خود وارد کنید.
// CommonJS
const fs = require('fs')
// ES6
import fs from 'fs'
ماژول مسیر Node.js چیست؟
می توانید از ماژول مسیر Node.js برای دستکاری مسیرهای فایل استفاده کنید. این شامل ابزارهایی برای تعامل آسان با مسیرهای فایل و دایرکتوری است. استفاده از ماژول های fs و path به صورت پشت سر هم برای تکمیل یک کار، یک تمرین استاندارد است. این به این دلیل است که اکثر توابع ماژول fs به مسیرهایی برای هدف قرار دادن فایل ها یا دایرکتوری ها برای عملکرد بستگی دارند.
می توانید ماژول مسیر را با دستور زیر وارد کد خود کنید:
// CommonJS
const path = require('path')
// ES6
import path from 'path'
توابع رایج برای دسترسی به سیستم فایل در Node.js
در اینجا متداولترین توابع Node.js fs و مسیر ماژول و نحوه استفاده از آنها برای تعامل با فایلها و دایرکتوریها آورده شده است.
کار با مسیرها
- path.resolve: این تابع برای حل یک مسیر از لیست دستورالعمل های مسیر ارسال شده به عنوان پارامتر است. برای مثال:path.resolve(‘home’, ‘projects’, ‘web’);//
/home/projects/web path.resolve(‘home/projects/web’, ‘../mobile’ را برمیگرداند );// /home/projects/mobile را برمیگرداند - path.normalize: تابع normalize مسیر صحیح و نرمال شده را از یک مسیر ورودی داده شده برمی گرداند. برای مثال:path.normalize(‘home/projects/web/../mobile/./code’);// بازگشت به خانه/projects/mobile/code
- path.join: این تابع یک مسیر از چندین بخش می سازد. برای مثال:path.join(‘home’, ‘projects’, ‘../’, ‘movies’);// بازگشت به خانه/movies
- path.basename: تابع basename قسمت نهایی مسیر را برمی گرداند. میتوانید از آن به دو صورت استفاده کنید: path.basename(‘home/projects/web/index.js’);// index.js path.basename(‘home/projects/web/index.js’, ‘.js’ ‘);// پسوند را حذف می کند و ‘index’ را برمی گرداند
- path.dirname: این تابع مسیر را به آخرین دایرکتوری یک مسیر معین برمی گرداند. مثال:path.dirname(‘home/projects/web/index.js’);// بازگشت به خانه/projects/web
- path.extname: با این تابع، میتوانید پسوند یک فایل را از یک path.path.extname(‘home/projects/web/index.js’);// ‘.js’ را برمیگرداند، دریافت کنید.
path.resolve('home', 'projects', 'web');
// returns <path_to_current_directory>/home/projects/web
path.resolve('home/projects/web', '../mobile');
// returns <path_to_current_directory>/home/projects/mobile
path.normalize('home/projects/web/../mobile/./code');
// returns home/projects/mobile/code
path.join('home', 'projects', '../', 'movies');
// returns home/movies
path.basename('home/projects/web/index.js');
// returns index.js
path.basename('home/projects/web/index.js', '.js');
// removes the extension and returns 'index'
path.dirname('home/projects/web/index.js');
// returns home/projects/web
path.extname('home/projects/web/index.js');
// returns '.js'
باز کردن و بستن فایل ها
- fs.open: این تابع برای باز کردن یا ایجاد یک فایل به صورت همزمان در Node.js است. شکل همزمان fs.open fs.openSync است. fs.open چهار آرگومان را می پذیرد که عبارتند از مسیر فایل، پرچم ها، حالت باز و تابع فراخوانی. پرچمها و openmode یک مقدار پیشفرض دارند و میتوانید از Node.js fs.open documentation.const filePath = path.join(__dirname, ‘/videos/newVideo.mp4’);// __dirname مسیر را برمیگرداند. به دایرکتوری فعلی فعلی توصیف کننده فایل})
- fs.close: تمرین خوبی است که همیشه فایل های باز را زمانی که دیگر مورد نیاز نیستند ببندید. Node.js تابع fs.close را برای این دارد:fs.open(filePath, (error, fileDescriptor) => { // handle errors, like ‘file/directory does not exist’ console.log(fileDescriptor); // فایل را ببندید fs.close(fileDescriptor, (خطا) => { // handle errors console.log (‘File with موفقیت بسته شد’); });})
const filePath = path.join(__dirname, '/videos/newVideo.mp4');
// __dirname returns the path to the current working directory.
// filePath = <path_to_current_directory>/videos/newVideo.mp4
fs.open(filePath, (error, fileDescriptor) => {
// handle errors
console.log(fileDescriptor); // prints an integer representing the file descriptor
})
fs.open(filePath, (error, fileDescriptor) => {
// handle errors, such as 'file/directory does not exist'
console.log(fileDescriptor);
// close the file
fs.close(fileDescriptor, (error) => {
// handle errors
console.log('File closed successfully');
});
})
ایجاد و حذف
- fs.mkdir: این دقیقاً مانند دستور ترمینال mkdir عمل می کند که یک دایرکتوری جدید ایجاد می کند. این یک مسیر، حالت (اختیاری) و تابع فراخوانی را به عنوان پارامتر می گیرد. می توانید از آن به این صورت استفاده کنید:const dirPath = path.join(__dirname, ‘newDirectory’);fs.mkdir(dirPath, (خطا) => { // handle errors console.log(‘Direct Directory جدید با موفقیت ایجاد شد’);} )
- fs.unlink: این تابع فایلی را در مسیری که به عنوان آرگومان ارسال شده است حذف یا حذف می کند. مثال کد زیر را در نظر بگیرید:const filePath = path.join(_dirname, ‘oldFile.js’); fs.unlink(filePath, (خطا) => { // handle errors console.log(‘File has been deleted with موفقیت’);});
- fs.rmdir: این روش دایرکتوری را در یک مسیر مشخص حذف می کند. از نظر استفاده بسیار شبیه به روش unlink است:const dirPath = path.resolve(‘home’, ‘projects’, ‘web’); fs.rmdir(dirPath، (خطا) => { // handle errors console.log(‘Directory with موفقیت deleted’);})
const dirPath = path.join(__dirname, 'newDirectory');
fs.mkdir(dirPath, (error) => {
// handle errors
console.log('New directory created successfully');
});
const filePath = path.join(_dirname, 'oldFile.js');
fs.unlink(filePath, (error) => {
// handle errors
console.log('File has been deleted successfully');
});
const dirPath = path.resolve('home', 'projects', 'web');
fs.rmdir(dirPath, (error) => {
// handle errors
console.log('Directory successfully deleted');
})
فراداده فایل
- fs.exists: متد exists وجود فایل در یک مسیر مشخص را بررسی می کند. پیاده سازی به شرح زیر است: let filePath = path.join(__dirname, ‘index.html’); fs.exists(filePath، (وجود دارد) => { console.log(وجود دارد) // true یا false})
- fs.stat: این یک تابع همزمان است که ویژگی های یک فایل را برمی گرداند. یک شی fs.Stats را برمی گرداند که برخی از روش ها را برای دسترسی به ویژگی های فایل در معرض نمایش قرار می دهد. مثالی در اینجا آمده است:fs.stat(‘index.js’, (error, stats) => { console.log(stats); // ویژگی های سطح پایین فایل را چاپ می کند stats.isFile(); // آمارهای true را برمی گرداند. isDirectory(// false})
let filePath = path.join(__dirname, 'index.html');
fs.exists(filePath, (exists) => {
console.log(exists) // true or false
})
fs.stat('index.js', (error, stats) => {
console.log(stats); // prints low level properties of the file
stats.isFile(); // returns true
stats.isDirectory(); // returns false
})
شما باید استفاده کنید
مسیر
روشهایی هنگام کار با مسیرهای فایل، زیرا شما را از رفتار غیرمنتظره در بین پلتفرمها نجات میدهند. این
Node.js fs
و
مسیر Node.js
اسناد فهرست جامعی از روش ها را توصیف می کند.
دستکاری فایل سیستم در Node.js
گستردگی ماژول fs دسترسی و تعامل با فایل ها را در هر سیستم عاملی بسیار آسان می کند. هنگامی که آن را همراه با ماژول مسیر استفاده می کنید، برای عملکردهای بیشتری باز هستید و می توانید سیستم فایل را آنطور که می خواهید دستکاری کنید.
مزیت اصلی Node.js قابل حمل بودن آن است. میتوانید برنامههای خود را بر روی هر پلتفرمی توسعه دهید و بدون نگرانی در مورد مشکلات اصلی سازگاری، آنها را در هر مکانی مستقر کنید.