از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
Node: لیست فایل ها در دایرکتوری کار با فایل ها یک کار رایج با هر زبان برنامه نویسی است. دستکاری فایل ها مستلزم آن است که مکان آنها را بدانیم. یکی از اساسیترین راههای تعامل با فایلها، فهرست کردن فایلها در یک فهرست است. در این مقاله از Node.js و ماژول داخلی fs به عنوان…
سرفصلهای مطلب
معرفی
کار با فایل ها یک کار رایج با هر زبان برنامه نویسی است. دستکاری فایل ها مستلزم آن است که مکان آنها را بدانیم. یکی از اساسیترین راههای تعامل با فایلها، فهرست کردن فایلها در یک فهرست است.
در این مقاله، از Node.js و داخلی استفاده خواهیم کرد fs ماژول و همچنین فهرست-درخت ماژول از NPM برای فهرست کردن همه فایل ها از یک دایرکتوری.
یک دایرکتوری می خوانیم، files
، واقع در همان مکان ما app.js
فایل در:
09/10/2020 01:27 PM 332 app.js
09/10/2020 01:24 PM <DIR> files
دایرکتوری شامل:
files
│ anotherDirectory
│ └── fileInDirectory.txt
└── textFile.txt
└── anotherTextFile.txt
فهرست-درخت
directory-tree
یک ماژول NPM مفید است که این کار را برای ما انجام می دهد و خروجی را به خوبی فرمت می کند. ابتدا بیایید آن را نصب کنیم:
$ npm install directory-tree
حالا وقته import آن را در اسکریپت ما قرار داده و مکان دایرکتوری ما را به آن ارائه دهید:
const dirTree = require("directory-tree");
const tree = dirTree('./files/');
console.log(tree);
این tree
ثابت now حاوی اطلاعاتی است که می خواهیم به آن دسترسی داشته باشیم. این کد نتیجه می دهد:
{
path: './files/',
name: 'files',
children: (
{
path: 'files\\anotherDirectory',
name: 'anotherDirectory',
children: (Array),
size: 8,
type: 'directory'
},
{
path: 'files\\anotherTextFile.txt',
name: 'anotherTextFile.txt',
size: 2218,
extension: '.txt',
type: 'file'
},
{
path: 'files\\textFile.txt',
name: 'textFile.txt',
size: 7,
extension: '.txt',
type: 'file'
}
),
size: 2233,
type: 'directory'
}
همچنین میتوانیم برنامههای افزودنی را که میخواهیم فیلتر کنیم، مشخص کنیم روی، با استفاده از dirTree()
تابع:
const tree = dirTree('./files/', {extensions:/\.js$/});
console.log(tree);
این یک نتیجه خالی را نشان می دهد زیرا هیچ فایل JS در آن وجود ندارد files
فهرست راهنما.
fs.readdir()
سادهترین راه برای خواندن فایلها از دایرکتوری بدون ماژولهای خارجی، با کمک این است readdir()
تابع. ناهمزمان است و آرایه ای حاوی نام فایل ها را در دایرکتوری که مشخص کرده اید برمی گرداند.
بیایید پیش برویم و فایلها را فهرست کنیم files
فهرست راهنما:
const directory = './files/';
const fs = require('fs');
fs.readdir(directory, (err, files) => {
files.forEach(file => {
console.log(file);
});
});
در اینجا، ما را مشخص کرده ایم directory
ثابت، با اشاره به files
پوشه، پس از آن، ما آن را وارد کردیم fs
مدول.
سپس، ما عرضه کرده ایم directory
به readdir()
عملکرد و نام خود را از طریق یک پاسخ تماس ثبت کرد. این نتیجه در:
anotherDirectory
anotherTextFile.txt
textFile.txt
textFile.txt - Shortcut.lnk
توجه داشته باشید: این readdir()
تابع همچنین دایرکتوری ها را می خواند، اما بدون اشاره به اینکه یک دایرکتوری است یا یک فایل. یک فایل بدون پسوند در این مورد مانند یک دایرکتوری به نظر می رسد.
با این حال، ما می توانیم استفاده کنیم fs.lstatSync()
عملکردی که در این مورد به ما کمک می کند:
const directory = './files/';
const path = require('path');
const fs = require('fs');
fs.readdir(directory, (err, files) => {
files.forEach(file => {
if (fs.lstatSync(path.resolve(directory, file)).isDirectory()) {
console.log('Directory: ' + file);
} else {
console.log('File: ' + file);
}
});
});
استفاده کردن isDirectory()
، بررسی کرده ایم که آیا چیزی که در مسیر داده شده با آن مواجه می شویم یک دایرکتوری است یا یک فایل. این در حال حاضر منجر به:
Directory: anotherDirectory
File: anotherTextFile.txt
File: file
File: textFile.txt
fs.readdirSync()
این readdirSync()
عملکرد تقریباً مشابه است readdir()
تابع، اما به جای ناهمزمان، به صورت همزمان می خواند.
به همان روشی که روش قبلی کار می کند – فقط عملیات را به طور همزمان مدیریت می کند:
const directory = './files/';
const path = require('path');
const fs = require('fs');
fs.readdirSync(directory).forEach(file => {
if (fs.lstatSync(path.resolve(directory, file)).isDirectory()) {
console.log('Directory: ' + file);
} else {
console.log('File: ' + file);
}
});
در اینجا، ما همان کاری را انجام دادیم که قبلا انجام داده بودیم. بررسی فایل ها و دایرکتوری ها، تغییر کمی بر اساس جریان روی نتایج. این کد چاپ می کند:
Directory: anotherDirectory
File: anotherTextFile.txt
File: file
File: textFile.txt
نتیجه
در این مقاله، چند راه برای فهرست کردن فایلها در یک فهرست در Node.js بررسی کردهایم که با آن شروع کردهایم. directory-tree
، یک بسته NPM برای این منظور ساخته شده است که پس از آن از داخلی استفاده کرده ایم fs
ماژول و آن readdir()
و readdirSync()
توابع برای لیست کردن فایل ها
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1403-01-20 00:21:12