مرجع سريع

ورقة غش وحدة fs في Node.js

دليل مرجعي سريع لوحدة fs في Node.js: قراءة الملفات وكتابتها ومراقبتها بشكل متزامن وغير متزامن وإدارة المجلدات.

· تاريخ النشر

توفر وحدة fs (نظام الملفات) في Node.js واجهات برمجة تطبيقات للتعامل مع نظام الملفات المحلي باستخدام الوعود (Promises) أو ردود الاتصال أو التنفيذ المتزامن.

واجهة برمجة التطبيقات المعتمدة على الوعود (fs/promises)

const fs = require('fs/promises');
// import fs from 'node:fs/promises';

// قراءة الملف كسلسلة نصية بتشفير UTF-8
const content = await fs.readFile('data.txt', 'utf8');

// كتابة محتوى الملف أو استبداله
await fs.writeFile('output.txt', 'Hello World', 'utf8');

// الإلحاق بالملف
await fs.appendFile('log.txt', 'New entry\n', 'utf8');

// التحقق من الوجود وأذونات الوصول
try {
  await fs.access('config.json');
} catch {
  console.log('الملف غير موجود أو لا يمكن الوصول إليه');
}

واجهة برمجة التطبيقات المتزامنة (Synchronous API)

const fs = require('fs');

const data = fs.readFileSync('input.txt', 'utf8');
fs.writeFileSync('output.txt', data);
fs.appendFileSync('output.txt', '\nappended');

const exists = fs.existsSync('file.txt');

بيانات وصفية وحالة الملفات (fs.stat)

const stats = await fs.stat('file.txt');

stats.isFile();            // -> ملف عادي (true / false)
stats.isDirectory();       // -> مجلد (true / false)
stats.isSymbolicLink();    // -> رابط رمزي (true / false)
stats.size;                // حجم الملف بالبايت
stats.mtime;               // طابع آخر تعديل زمني

عمليات المجلدات

// سرد محتويات المجلد
const files = await fs.readdir('src/');

// إنشاء المجلدات بشكل متكرر
await fs.mkdir('build/assets/css', { recursive: true });

// حذف المجلدات بشكل متكرر
await fs.rm('dist/', { recursive: true, force: true });

مراقبة نظام الملفات (fs.watch)

const fs = require('fs');

const watcher = fs.watch('src/', { recursive: true }, (eventType, filename) => {
  console.log(`Event: ${eventType} on ${filename}`);
});

// إيقاف المراقبة
watcher.close();

واصفات الملفات (File Descriptors)

const fs = require('fs/promises');

// فتح للقراءة فقط
const filehandle = await fs.open('archive.bin', 'r');

// تخصيص مخزن مؤقت 1024 بايت
const buffer = Buffer.alloc(1024);

// قراءة البايتات في المخزن المؤقت
const { bytesRead } = await filehandle.read(buffer, 0, 1024, 0);

await filehandle.close();

مراجع ذات صلة

موضوعات ذات صلة