الفرق بين المراجعتين لصفحة: «Node.js/fs»

من موسوعة حسوب
لا ملخص تعديل
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}'
 
(7 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:التعامل مع نظام الملفات في Node.js}}</noinclude>
<noinclude>{{DISPLAYTITLE:التعامل مع نظام الملفات في Node.js}}</noinclude>
الاستقرار: 2 - مسقر
الاستقرار: 2 - مستقر
 
توفِّر الوحدة <code>fs‎</code> واجهةً برمجيةً للتعامل مع نظام الملفات بطريقة قريبة جدًا من دوال POSIX القياسية.
توفِّر الوحدة <code>fs‎</code> واجهةً برمجيةً للتعامل مع نظام الملفات بطريقة قريبة جدًا من دوال POSIX القياسية.
يمكن الوصول إلى هذه الوحدة باستعمال الأمر التالي:
 
<syntaxhighlight lang="javascript">const fs = require('fs');
يمكن الوصول إلى هذه الوحدة باستعمال الأمر التالي:<syntaxhighlight lang="javascript">const fs = require('fs');
</syntaxhighlight>
</syntaxhighlight>جميع عمليات نظام الملفات لها أشكال متزامنة وغير متزامنة.
جميع عمليات نظام الملفات لها أشكال متزامنة وغير متزامنة.
 
تأخذ الأشكال المتزامنة دالة رد نداء مكملة دومًا وتُمرَّر إليها كآخر وسيط. تعتمد الوسائط المُمرَّرة إلى دالة رد النداء المكملة تلك على التابع نفسه، ولكن الوسيط الأول فيها محجوزٌ دومًا للاستثناء. إن اكتملت العملية بنجاح، فستكون قيمة هذا الوسيط <code>null‎</code> أو <code>undefined‎</code>.
تأخذ الأشكال المتزامنة دالة رد نداء مكملة دومًا وتُمرَّر إليها كآخر وسيط. تعتمد الوسائط المُمرَّرة إلى دالة رد النداء المكملة تلك على التابع نفسه، ولكن الوسيط الأول فيها محجوزٌ دومًا للاستثناء. إن اكتملت العملية بنجاح، فستكون قيمة هذا الوسيط <code>null‎</code> أو <code>undefined‎</code>.<syntaxhighlight lang="javascript">const fs = require('fs');
<syntaxhighlight lang="javascript">const fs = require('fs');


fs.unlink('/tmp/hello', (err) => {
fs.unlink('/tmp/hello', (err) => {
سطر 13: سطر 13:
   console.log('successfully deleted /tmp/hello');
   console.log('successfully deleted /tmp/hello');
});
});
</syntaxhighlight>
</syntaxhighlight>تُرمَى الاستثناءات التي تحدث باستعمال العمليات المتزامنة مباشرةً وقد تُعالَج باستعمال العبارة <code>[[JavaScript/try...catch|try...catch‎]]</code>، أو ربما يُسمَح لها بالانتشار للأعلى (bubble up).<syntaxhighlight lang="javascript">const fs = require('fs');
تُرمَى الاستثناءات التي تحدث باستعمال العمليات المتزامنة مباشرةً وقد تُعالَج باستعمال العبارة <code>try...catch‎</code>، أو ربما يُسمَح لها بالانتشار للأعلى (bubble up).
<syntaxhighlight lang="javascript">const fs = require('fs');


try {
try {
سطر 23: سطر 21:
   // عالج الخطأ هنا
   // عالج الخطأ هنا
}
}
</syntaxhighlight>
</syntaxhighlight>لا يوجد أي ترتيب مضمون عند استعمال توابع غير متزامنة. بناءً على ذلك، هنالك احتمالٌ كبير أن يحصل خطأ في المثال التالي لأنَّ العملية <code>[[Node.js/fs#.E2.80.8Efs.stat.28path.5B.2C options.5D.2C callback.29|fs.stat()‎]]</code> قد تكتمل قبل العملية <code>[[Node.js/fs#fs.rename.28oldPath.2C newPath.2C callback.29.E2.80.8E|fs.rename()‎]]</code>:<syntaxhighlight lang="javascript">fs.rename('/tmp/hello', '/tmp/world', (err) => {
لا يوجد أي ترتيب مضمون عند استعمال توابع غير متزامنة. بناءً على ذلك، هنالك احتمالٌ كبير أن يحصل خطأ في المثال التالي لأنَّ العملية <code>fs.stat()‎</code> قد تكتمل قبل العملية <code>fs.rename()‎</code>:
<syntaxhighlight lang="javascript">fs.rename('/tmp/hello', '/tmp/world', (err) => {
   if (err) throw err;
   if (err) throw err;
   console.log('renamed complete');
   console.log('renamed complete');
سطر 33: سطر 29:
   console.log(`stats: ${JSON.stringify(stats)}`);
   console.log(`stats: ${JSON.stringify(stats)}`);
});
});
</syntaxhighlight>
</syntaxhighlight>لتنفيذ المثال بالشكل والترتيب الصحيح للعمليات، انقل الاستدعاء <code>[[Node.js/fs#.E2.80.8Efs.stat.28path.5B.2C options.5D.2C callback.29|fs.stat()]]‎</code> إلى داخل رد النداء للعملية <code>[[Node.js/fs#fs.rename.28oldPath.2C newPath.2C callback.29.E2.80.8E|fs.rename()]]‎</code>:<syntaxhighlight lang="javascript">fs.rename('/tmp/hello', '/tmp/world', (err) => {
لتنفيذ المثال بالشكل والترتيب الصحيح للعمليات، انقل الاستدعاء <code>fs.stat()‎</code> إلى داخل رد النداء للعملية <code>fs.rename()‎</code>:
<syntaxhighlight lang="javascript">fs.rename('/tmp/hello', '/tmp/world', (err) => {
   if (err) throw err;
   if (err) throw err;
   fs.stat('/tmp/world', (err, stats) => {
   fs.stat('/tmp/world', (err, stats) => {
سطر 42: سطر 36:
   });
   });
});
});
</syntaxhighlight>
</syntaxhighlight>في العمليات المشغولة، يُوصَى المبرمج بشدة باستخدام الاصدارات غير المتزامنة من هذه الاستدعاءات، إذ ستحجب الإصدارات المتزامنة كامل العملية حتى تكمل أو توقف جميع اتصالاتها.
في العمليات المشغولة، يُوصَى المبرمج بشدة باستخدام الاصدارات غير المتزامنة من هذه الاستدعاءات، إذ ستحجب الإصدارات المتزامنة كامل العملية حتى تكمل أو توقف جميع اتصالاتها.
 
لمَّا كانت أغلب دوال الوحدة <code>fs‎</code> تسمح بحذف وسيط رد النداء، فإنَّ هذا السلوك غير مُستحسَن مطلقًا، إذ تُستخدَم دالة رد النداء الافتراضية، في أبسط الحالات، في معالجة الأخطاء المرمية وهنا تكمن فائدتها. للحصول على متعقِّب لموقع الاستدعاء الأصلي، اضبط متغير البيئة <code>NODE_DEBUG‎</code>.
لمَّا كانت أغلب دوال الوحدة <code>fs‎</code> تسمح بحذف وسيط رد النداء، فإنَّ هذا السلوك غير مُستحسَن مطلقًا، إذ تُستخدَم دالة رد النداء الافتراضية، في أبسط الحالات، في معالجة الأخطاء المرمية وهنا تكمن فائدتها. للحصول على متعقِّب لموقع الاستدعاء الأصلي، اضبط متغير البيئة <code>NODE_DEBUG‎</code>.
أُهملَت عملية حذف دالة رد النداء في دوال الوحدة <code>fs‎</code> الغير متزامنة، وقد يؤدي فعل ذلك إلى رمي خطأ في المستقبل.
 
<syntaxhighlight lang="javascript">$ cat script.js
أُهملَت عملية حذف دالة رد النداء في دوال الوحدة <code>fs‎</code> الغير متزامنة، وقد يؤدي فعل ذلك إلى رمي خطأ في المستقبل.<syntaxhighlight lang="javascript">$ cat script.js
function bad() {
function bad() {
   require('fs').readFile('/');
   require('fs').readFile('/');
سطر 59: سطر 53:
     <stack trace.>
     <stack trace.>
</syntaxhighlight>
</syntaxhighlight>
== مسارات الملف (File paths) ==
==مسارات الملف (File paths)==
تقبل أغلب عمليات <code>fs‎</code> تمرير مسارات لملفات إليها في شكل سلسلة نصية، أو كائن من النوع <code>Buffer‎</code>، أو النوع <code>URL‎</code> باستعمال البروتوكول <code>file:‎</code>.
تقبل أغلب عمليات <code>fs‎</code> تمرير مسارات لملفات إليها في شكل سلسلة نصية، أو كائن من النوع <code>[[Node.js/buffer|Buffer‎]]</code>، أو النوع <code>[[Node.js/url#.D8.A7.D9.84.D8.B5.D9.86.D9.81 URL|URL‎]]</code> باستعمال البروتوكول <code>file:‎</code>.
تُفسَّر المسارات التي توضع في سلاسل نصية كسلاسل من المحارف بترميز UTF-8 ممثلةً اسم الملف المطلق أو النسبي. ستُستبيَن المسارات النسبية نسبةً إلى مجلد العمل الحالي المحدَّد باستعمال <code>process.cwd()‎</code>.
 
اطلع على المثال التالي الذي يشرح كيفية استعمال مسار مطلق على نظام متوافق مع معيار POSIX:
تُفسَّر المسارات التي توضع في سلاسل نصية كسلاسل من المحارف بترميز UTF-8 ممثلةً اسم الملف المطلق أو النسبي. ستُستبيَن المسارات النسبية نسبةً إلى مجلد العمل الحالي المحدَّد باستعمال <code>[[Node.js/process#process.cwd.28.E2.80.8E.29.E2.80.8E|process.cwd()‎]]</code>.
<syntaxhighlight lang="javascript">const fs = require('fs');
 
اطلع على المثال التالي الذي يشرح كيفية استعمال مسار مطلق على نظام متوافق مع معيار POSIX:<syntaxhighlight lang="javascript">const fs = require('fs');


fs.open('/open/some/file.txt', 'r', (err, fd) => {
fs.open('/open/some/file.txt', 'r', (err, fd) => {
سطر 71: سطر 66:
   });
   });
});
});
</syntaxhighlight>
</syntaxhighlight>اطلع على المثال التالي الذي يشرح كيفية استعمال مسار نسي (نسبةً إلى <code>[[Node.js/process#process.cwd.28.E2.80.8E.29.E2.80.8E|process.cwd()]]‎</code>) على نظام متوافق مع معيار POSIX:<syntaxhighlight lang="javascript">fs.open('file.txt', 'r', (err, fd) => {
اطلع على المثال التالي الذي يشرح كيفية استعمال مسار نسي (نسبةً إلى <code>process.cwd()‎</code>) على نظام متوافق مع معيار POSIX:
<syntaxhighlight lang="javascript">fs.open('file.txt', 'r', (err, fd) => {
   if (err) throw err;
   if (err) throw err;
   fs.close(fd, (err) => {
   fs.close(fd, (err) => {
سطر 79: سطر 72:
   });
   });
});
});
</syntaxhighlight>
</syntaxhighlight>تحديد المسارات باستعمال الكائنات [[Node.js/buffer|<code>Buffer‎</code>]] مفيدٌ جدًا خصوصًا على بعض أنظمة التشغيل المتوافقة مع POSIX التي تعامل مسارات الملفات كسلسلة مبهمة من البايتات. في بعض الأنظمة، يمكن لمسار ملف واحد أن يحوي سلاسل فرعية ترميز محارف كلِّ واحدة منها مختلفٌ عن الآخر. وكما هو الحال في مسارات السلاسل النصية، يمكن أن تكون المسارات المحتواة في الكائنات [[Node.js/buffer|<code>Buffer‎</code>]] نسبيةً أو مطلقةً. اطلع على المثال التالي الذي يشرح كيفية استعمال مسار مطلق على نظام متوافق مع معيار POSIX:<syntaxhighlight lang="javascript">fs.open(Buffer.from('/open/some/file.txt'), 'r', (err, fd) => {
تحديد المسارات باستعمال الكائنات <code>Buffer‎</code> مفيدٌ جدًا خصوصًا على بعض أنظمة التشغيل المتوافقة مع POSIX التي تعامل مسارات الملفات كسلسلة مبهمة من البايتات. في بعض الأنظمة، يمكن لمسار ملف واحد أن يحوي سلاسل فرعية ترميز محارف كلِّ واحدة منها مختلفٌ عن الآخر. وكما هو الحال في مسارات السلاسل النصية، يمكن أن تكون المسارات المحتواة في الكائنات <code>Buffer‎</code> نسبيةً أو مطلقةً.
اطلع على المثال التالي الذي يشرح كيفية استعمال مسار مطلق على نظام متوافق مع معيار POSIX:
<syntaxhighlight lang="javascript">fs.open(Buffer.from('/open/some/file.txt'), 'r', (err, fd) => {
   if (err) throw err;
   if (err) throw err;
   fs.close(fd, (err) => {
   fs.close(fd, (err) => {
سطر 88: سطر 78:
   });
   });
});
});
</syntaxhighlight>
</syntaxhighlight>في ويندوز، تتبنى Node.js مفهوم «مجلد العمل لكل قرص» (per-drive working directory). يمكن ملاحظة هذا السلوك عند استعمال مسار قرص دون محرف الخط المائل العكسي <code>\‎</code>. على سبيل المثال، يمكن أن يعيد الاستدعاء <code>[[Node.js/fs#fs.readdirSync.28path.5B.2C options.5D.29.E2.80.8E|fs.readdirSync('c:\\')]]‎</code> نتيجةً مختلفةً عن الاستدعاء <code>[[Node.js/fs#fs.readdirSync.28path.5B.2C options.5D.29.E2.80.8E|fs.readdirSync('c:')‎]]</code>. للمزيد من المعلومات، اطلع على [https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#fully-qualified-vs-relative-paths هذه] الصفحة.
في ويندوز، تتبنى Node.js مفهوم «مجلد العمل لكل قرص» (per-drive working directory). يمكن ملاحظة هذا السلوك عند استعمال مسار قرص دون محرف الخط المائل العكسي <code>\‎</code>. على سبيل المثال، يمكن أن يعيد الاستدعاء <code>fs.readdirSync('c:\\')‎</code> نتيجةً مختلفةً عن الاستدعاء <code>fs.readdirSync('c:')‎</code>. للمزيد من المعلومات، اطلع على هذه الصفحة.
===دعم الكائن <code>URL‎</code>===
=== دعم الكائن <code>URL‎</code> ===
أضيف في الإصدار: v7.6.0.
أضيف في الإصدار: v7.6.0.
في أغلب دوال الوحدة <code>fs‎</code>، قد يُمرَّر الوسيط <code>path‎</code> والوسيط <code>filename‎</code> ككائن من النوع <code>URL‎</code> الذي يمثل عنوان URL متوافق مع المعيار WHATWG. الكائنات <code>URL‎</code> التي تستعمل البروتوكول <code>file:‎</code> مدعومةً فقط.
 
<syntaxhighlight lang="javascript">const fs = require('fs');
في أغلب دوال الوحدة <code>fs‎</code>، قد يُمرَّر الوسيط <code>path‎</code> والوسيط <code>filename‎</code> ككائن من النوع <code>[[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|URL‎]]</code> الذي يمثل عنوان URL متوافق مع المعيار WHATWG. الكائنات <code>[[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|URL‎]]</code> التي تستعمل البروتوكول <code>file:‎</code> مدعومةً فقط.<syntaxhighlight lang="javascript">const fs = require('fs');
const fileUrl = new URL('file:///tmp/hello');
const fileUrl = new URL('file:///tmp/hello');


fs.readFileSync(fileUrl);
fs.readFileSync(fileUrl);
</syntaxhighlight>
</syntaxhighlight>العناوين URL ذات البروتوكول <code>file:‎</code> هي مسارات مطلقة دومًا.
العناوين URL ذات البروتوكول <code>file:‎</code> هي مسارات مطلقة دومًا.
 
قد يترافق استعمال الكائنات <code>URL‎</code> -التي تمثل عناوين URL متوافقة مع المعيار WHATWG- سلوكيات محددة بحسب المنصة المستعملة.
قد يترافق استعمال الكائنات <code>[[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|URL‎]]</code> -التي تمثل عناوين URL متوافقة مع المعيار WHATWG- سلوكيات محددة بحسب المنصة المستعملة.
في ويندوز، تحوَّل العناوين URL ذات البرتوكول <code>file‎:</code> مع اسم المضيف (hosename) إلى مسارات UNC بينما تحول العناوين URL ذات البرتوكول <code>file‎:</code> التي تحوي على محارف الأقراص إلى مسارات محلية مطلقة. أما العناوين URL ذات البروتوكول <code>file‎:</code> التي لا تحوي اسم المضيف (hosename) ولا محرف قرص، فسيؤدي استعمالها إلى رمي خطأ. تفحَّص المثال التالي الذي يشرح ما سبق:
 
<syntaxhighlight lang="javascript">// :في ويندوز
في ويندوز، تحوَّل العناوين URL ذات البرتوكول <code>file‎:</code> مع اسم المضيف (hosename) إلى مسارات UNC بينما تحول العناوين URL ذات البرتوكول <code>file‎:</code> التي تحوي على محارف الأقراص إلى مسارات محلية مطلقة. أما العناوين URL ذات البروتوكول <code>file‎:</code> التي لا تحوي اسم المضيف (hosename) ولا محرف قرص، فسيؤدي استعمالها إلى رمي خطأ. تفحَّص المثال التالي الذي يشرح ما سبق:<syntaxhighlight lang="javascript">// :في ويندوز


// - UNC مع اسم المضيف إلى مسارات file‎: ذات البرتوكول URL تحوَّل العناوين  
// - UNC مع اسم المضيف إلى مسارات file‎: ذات البرتوكول URL تحوَّل العناوين  
سطر 128: سطر 117:
// file:///tmp/hello => /tmp/hello
// file:///tmp/hello => /tmp/hello
fs.readFileSync(new URL('file:///tmp/hello'));
fs.readFileSync(new URL('file:///tmp/hello'));
</syntaxhighlight>
</syntaxhighlight>يؤدي استعمال العناوين URL ذات البروتوكول <code>file‎:</code> التي تحوي محارف الخط المائل المرمزة إلى رمي خطأ في جميع المنصات:<syntaxhighlight lang="javascript">// في ويندوز
يؤدي استعمال العناوين URL ذات البروتوكول <code>file‎:</code> التي تحوي محارف الخط المائل المرمزة إلى رمي خطأ في جميع المنصات:
<syntaxhighlight lang="javascript">// في ويندوز
fs.readFileSync(new URL('file:///C:/p/a/t/h/%2F'));
fs.readFileSync(new URL('file:///C:/p/a/t/h/%2F'));
fs.readFileSync(new URL('file:///C:/p/a/t/h/%2f'));
fs.readFileSync(new URL('file:///C:/p/a/t/h/%2f'));
سطر 141: سطر 128:
// إذ لا يجب أن TypeError [ERR_INVALID_FILE_URL_PATH] سيرمى الخطأ
// إذ لا يجب أن TypeError [ERR_INVALID_FILE_URL_PATH] سيرمى الخطأ
// الذي يمثل مسار ملف على المحارف / بعد ترميزها URL يحوي عنوان  
// الذي يمثل مسار ملف على المحارف / بعد ترميزها URL يحوي عنوان  
</syntaxhighlight>
</syntaxhighlight>في ويندوز، سيؤدي استعمال العناوين URL ذات البروتوكول <code>file‎:</code> التي تحوي محارف الخط المائل العكسي المرمزة إلى رمي خطأ:<syntaxhighlight lang="javascript">// في ويندوز
في ويندوز، سيؤدي استعمال العناوين URL ذات البروتوكول <code>file‎:</code> التي تحوي محارف الخط المائل العكسي المرمزة إلى رمي خطأ:
<syntaxhighlight lang="javascript">// في ويندوز
fs.readFileSync(new URL('file:///C:/path/%5C'));
fs.readFileSync(new URL('file:///C:/path/%5C'));
fs.readFileSync(new URL('file:///C:/path/%5c'));
fs.readFileSync(new URL('file:///C:/path/%5c'));
سطر 149: سطر 134:
// الذي يمثل مسار ملف على المحارف \ أو / بعد ترميزها URL يحوي عنوان  
// الذي يمثل مسار ملف على المحارف \ أو / بعد ترميزها URL يحوي عنوان  
</syntaxhighlight>
</syntaxhighlight>
== واصفات الملف (File Descriptors) ==
==واصفات الملف (File Descriptors)==
في الأنظمة المتوافقة مع POSIX، تحتفظ النواة بجدول للملفات والموارد المفتوحة حاليًا لكل عملية. يُسنَد كل ملف مفتوح إلى إلى معرِّف عددي بسيط  يدعى «واصف الملف» (file descriptor). إن تحدثنا على مستوى النظام، نجد أنَّ جميع عمليات نظام الملفات تستعمل واصفات الملفات هذه لتحدِّد وتتتبَّع كل ملف بعينه. يستعمل نظام ويندوز طريقةً مختلفةً ولكنها شبيهة نظريًا بالآلية التي ذكرناها لتعقُّب الموارد. لتبسيط الأشياء للمستخدمين، عمدت Node.js إلى إزالة مثل هذه الاختلافات بين أنظمة التشغيل وإسناد جميع الملفات المفتوحة إلى واصفات ملف عددية.
في الأنظمة المتوافقة مع POSIX، تحتفظ النواة بجدول للملفات والموارد المفتوحة حاليًا لكل عملية. يُسنَد كل ملف مفتوح إلى إلى معرِّف عددي بسيط  يدعى «واصف الملف» (file descriptor). إن تحدثنا على مستوى النظام، نجد أنَّ جميع عمليات نظام الملفات تستعمل واصفات الملفات هذه لتحدِّد وتتتبَّع كل ملف بعينه. يستعمل نظام ويندوز طريقةً مختلفةً ولكنها شبيهة نظريًا بالآلية التي ذكرناها لتعقُّب الموارد. لتبسيط الأشياء للمستخدمين، عمدت Node.js إلى إزالة مثل هذه الاختلافات بين أنظمة التشغيل وإسناد جميع الملفات المفتوحة إلى واصفات ملف عددية.
يُستعمَل التابع <code>fs.open()‎</code> لتخصيص واصف ملف جديد للملف المراد فتحه. متى ما خُصِّض واصف للملف، يمكن استعماله لقراءة بيانات من، أو كتابة بيانات على، أو طلب معلومات عن هذا الملف.
 
<syntaxhighlight lang="javascript">fs.open('/open/some/file.txt', 'r', (err, fd) => {
يُستعمَل التابع <code>[[Node.js/fs#fs.open.28path.2C flags.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.open()]]‎</code> لتخصيص واصف ملف جديد للملف المراد فتحه. متى ما خُصِّض واصف للملف، يمكن استعماله لقراءة بيانات من، أو كتابة بيانات على، أو طلب معلومات عن هذا الملف.<syntaxhighlight lang="javascript">fs.open('/open/some/file.txt', 'r', (err, fd) => {
   if (err) throw err;
   if (err) throw err;
   fs.fstat(fd, (err, stat) => {
   fs.fstat(fd, (err, stat) => {
سطر 164: سطر 149:
   });
   });
});
});
</syntaxhighlight>
</syntaxhighlight>تخصِّص أغلب أنظمة التشغيل مجالًا محدودًا من الأعداد لاستعمالها كواصفاتٍ للملفات التي قد تُفتَح في أي وقت، لذا فإنَّ إغلاق الواصف بعد اكتمال العملية أمرٌ بالغ الأهمية. سيؤدي إهمال أو فشل إغلاق واصفات الملفات إلى حدوث تسريب في الذاكرة (memory leak) ينتهي بانهيار التطبيق.
تخصِّص أغلب أنظمة التشغيل مجالًا محدودًا من الأعداد لاستعمالها كواصفاتٍ للملفات التي قد تُفتَح في أي وقت، لذا فإنَّ إغلاق الواصف بعد اكتمال العملية أمرٌ بالغ الأهمية. سيؤدي إهمال أو فشل إغلاق واصفات الملفات إلى حدوث تسريب في الذاكرة (memory leak) ينتهي بانهيار التطبيق.
==استعمال مجمع الخيوط (Threadpool Usage)==
== استعمال مجمع الخيوط (Threadpool Usage) ==
تستعمل جميع واجهات نظام الملفات البرمجية باستثناء <code>fs.FSWatcher()‎</code> وتلك التي يظهر أنها تُستعمَل بشكل متزامن مجمع الخيوط الخاص بالمكتبة libuv والذي يمكن أن يكون يكون له تأثيرات مفاجئة وسلبية على بعض التطبيقات. اطلع إلى توثيق خيار سطر الأوامر <code>[[Node.js/cli#UV THREADPOOL SIZE.3Dsize|UV_THREADPOOL_SIZE‎]]</code> للمزيد من التفاصيل.
تستعمل جميع واجهات نظام الملفات البرمجية باستثناء <code>fs.FSWatcher()‎</code> وتلك التي يظهر أنها تُستعمَل بشكل متزامن مجمع الخيوط الخاص بالمكتبة libuv والذي يمكن أن يكون يكون له تأثيرات مفاجئة وسلبية على بعض التطبيقات. اطلع إلى توثيق خيار سطر الأوامر <code>UV_THREADPOOL_SIZE‎</code> للمزيد من التفاصيل.
==الصنف <code>fs.Dirent‎</code>==
== الصنف <code>fs.Dirent‎</code> ==
أضيف في الإصدار: v10.10.0.
أضيف في الإصدار: v10.10.0.
عندما يُستدعَى التابع <code>fs.readdir()‎</code> أو التابع <code>fs.readdirSync()‎</code> مع ضبط قيمة الخيار <code>withFileTypes‎</code> فيه إلى القيمة <code>true‎</code>، ستُملَأ المصفوفة الناتجة بالكائنات <code>fs.Dirent‎</code> بدلًا من السلاسل النصية أو الكائنات <code>Buffer‎</code>>
 
=== <code>‎dirent.isBlockDevice()</code> ===
عندما يُستدعَى التابع <code>[[Node.js/fs#fs.readdir.28path.5B.2C options.5D.2C callback.29.E2.80.8E|fs.readdir()]]‎</code> أو التابع <code>[[Node.js/fs#fs.readdirSync.28path.5B.2C options.5D.29.E2.80.8E|fs.readdirSync()‎]]</code> مع ضبط قيمة الخيار <code>withFileTypes‎</code> فيه إلى القيمة <code>true‎</code>، ستُملَأ المصفوفة الناتجة بالكائنات <code>fs.Dirent‎</code> بدلًا من السلاسل النصية أو الكائنات <code>[[Node.js/buffer|Buffer‎]]</code>.
===<code>‎dirent.isBlockDevice()</code>===
أضيف في الإصدار: v10.10.0.
أضيف في الإصدار: v10.10.0.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل جهازًا كتليًّا (block device)، أو القيمة <code>false‎</code> خلا ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل جهازًا كتليًّا (block device)، أو القيمة <code>false‎</code> خلا ذلك.
=== <code>dirent.isCharacterDevice()‎</code> ===
===<code>dirent.isCharacterDevice()‎</code>===
أضيف في الإصدار: v10.10.0.
أضيف في الإصدار: v10.10.0.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل جهازًا محرفيًّا (character device)، أو القيمة <code>false‎</code> خلا ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل جهازًا محرفيًّا (character device)، أو القيمة <code>false‎</code> خلا ذلك.
=== <code>dirent.isDirectory()‎</code> ===
===<code>dirent.isDirectory()‎</code>===
أضيف في الإصدار: v10.10.0.
أضيف في الإصدار: v10.10.0.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل مجلَّدًا في نظام الملفات (file system directory)، أو القيمة <code>false‎</code> خلا ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل مجلَّدًا في نظام الملفات (file system directory)، أو القيمة <code>false‎</code> خلا ذلك.
=== <code>dirent.isFIFO()‎</code> ===
===<code>dirent.isFIFO()‎</code>===
أضيف في الإصدار: v10.10.0.
أضيف في الإصدار: v10.10.0.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل الأنبوب FIFO (اختصار للعبارة first-in-first-out أي «من دخل أولًا يخرج أولًا»، كما يدعى أحيانًا «أنبوبًا مسمًى») ، أو القيمة <code>false‎</code> خلا ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل الأنبوب FIFO (اختصار للعبارة first-in-first-out أي «من دخل أولًا يخرج أولًا»، كما يدعى أحيانًا «أنبوبًا مسمًى») ، أو القيمة <code>false‎</code> خلا ذلك.
=== <code>dirent.isFile()‎</code> ===
===<code>dirent.isFile()‎</code>===
أضيف في الإصدار: v10.10.0.
أضيف في الإصدار: v10.10.0.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل ملفًا طبيعيًّا، أو القيمة <code>false‎</code> خلا ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل ملفًا طبيعيًّا، أو القيمة <code>false‎</code> خلا ذلك.
=== <code>dirent.isSocket()‎</code> ===
===<code>dirent.isSocket()‎</code>===
أضيف في الإصدار: v10.10.0.
أضيف في الإصدار: v10.10.0.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل مقبسًا (socket)، أو القيمة <code>false‎</code> خلا ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل مقبسًا (socket)، أو القيمة <code>false‎</code> خلا ذلك.
=== <code>dirent.isSymbolicLink()‎</code> ===
===<code>dirent.isSymbolicLink()‎</code>===
أضيف في الإصدار: v10.10.0.
أضيف في الإصدار: v10.10.0.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل وصلةً رمزيَّةً (symbolic link)، أو القيمة <code>false‎</code> خلا ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Dirent‎</code> يمثِّل وصلةً رمزيَّةً (symbolic link)، أو القيمة <code>false‎</code> خلا ذلك.
=== <code>dirent.name‎</code> ===
===<code>dirent.name‎</code>===
أضيفت في الإصدار: v10.10.0.
أضيفت في الإصدار: v10.10.0.
* [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
*[[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
تمثل هذه الخاصية اسم الملف الذي يشير إليه الكائن <code>fs.Dirent‎</code>. يُحدَّد نوع هذه القيمة عبر <code>options.encoding‎</code> الممرَّر إلى <code>fs.readdir()‎</code> أو <code>fs.readdirSync()‎</code>.
تمثل هذه الخاصية اسم الملف الذي يشير إليه الكائن <code>fs.Dirent‎</code>. يُحدَّد نوع هذه القيمة عبر <code>options.encoding‎</code> الممرَّر إلى <code>fs.readdir()‎</code> أو <code>fs.readdirSync()‎</code>.
== الصنف <code>fs.FSWatcher‎</code> ==
==الصنف <code>fs.FSWatcher‎</code>==
أضيف في الإصدار: v0.5.8.
أضيف في الإصدار: v0.5.8.
سيعيد الاستدعاء الناجح للتابع <code>fs.watch()‎</code> كائنًا جديدًا من النوع <code>fs.FSWatcher‎</code>.
 
الكائن <code>fs.FSWatcher‎</code> هو مطلقٌُ للأحداث (EventEmitte)، إذ يُطلِق الحدث <code>'change'</code> كلما عُدِّل ملفٌ مراقبٌ.
سيعيد الاستدعاء الناجح للتابع <code>[[Node.js/fs#fs.watch.28filename.5B.2C options.5D.5B.2C listener.5D.29.E2.80.8E|fs.watch()‎]]</code> كائنًا جديدًا من النوع <code>fs.FSWatcher‎</code>.
=== الحدث <code>'change'</code> ===
 
الكائن <code>fs.FSWatcher‎</code> هو [[Node.js/events#.D8.A7.D9.84.D8.B5.D9.86.D9.81: EventEmitter|مطلقٌُ للأحداث]] (EventEmitter)، إذ يُطلِق الحدث <code>'change'</code> كلما عُدِّل ملفٌ مراقبٌ.
===الحدث <code>'change'</code>===
أضيف في الإصدار: v0.5.8.
أضيف في الإصدار: v0.5.8.
* <code>eventType‎</code>: ‏[[JavaScript/String|<string>]] نوع حدث «التغيير» الذي حصل.
*<code>eventType‎</code>: ‏[[JavaScript/String|<string>]] نوع حدث «التغيير» الذي حصل.
* <code>filename‎</code>: ‏[[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]] اسم الملف الذي حصل تغيير فيه (إن كان متاحًا).
*<code>filename‎</code>: ‏[[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]] اسم الملف الذي حصل تغيير فيه (إن كان متاحًا).
يُطلَق هذا الحدث عندما يتغير شيء في المجلَّد أو الملف المراقب. يوجد المزيد من التفاصيل في توثيق التابع <code>fs.watch()‎</code> في الأسفل.
يُطلَق هذا الحدث عندما يتغير شيء في المجلَّد أو الملف المراقب. يوجد المزيد من التفاصيل في توثيق التابع <code>[[Node.js/fs#fs.watch.28filename.5B.2C options.5D.5B.2C listener.5D.29.E2.80.8E|fs.watch()‎]]</code> في الأسفل.
قد لا يكون الوسيط <code>filename‎</code> متوافرًا وهذا يعتمد على دعم نظام التشغيل. إن أعطي الوسيط <code>filename‎</code>، فسيُعطَى بوصفه كائنًا من النوع <code>Buffer‎</code> إن استُدعَي التابع <code>fs.watch()‎</code> مع ضبط الخيار <code>encoding‎</code> إلى القيمة <code>'buffer‎'</code>؛ خلا ذلك، سيُعطَى الوسيط <code>filename‎</code> في سلسلة نصية مرمزة بالترميز UTF-8.
 
<syntaxhighlight lang="javascript">// fs.watch() إضافة معالج حدث عبر مستمع
قد لا يكون الوسيط <code>filename‎</code> متوافرًا وهذا يعتمد على دعم نظام التشغيل. إن أعطي الوسيط <code>filename‎</code>، فسيُعطَى بوصفه كائنًا من النوع <code>[[Node.js/buffer|Buffer‎]]</code> إن استُدعَي التابع <code>[[Node.js/fs#fs.watch.28filename.5B.2C options.5D.5B.2C listener.5D.29.E2.80.8E|fs.watch()]]‎</code> مع ضبط الخيار <code>encoding‎</code> إلى القيمة <code>'buffer‎'</code>؛ خلا ذلك، سيُعطَى الوسيط <code>filename‎</code> في سلسلة نصية مرمزة بالترميز UTF-8.<syntaxhighlight lang="javascript">// fs.watch() إضافة معالج حدث عبر مستمع
fs.watch('./tmp', { encoding: 'buffer' }, (eventType, filename) => {
fs.watch('./tmp', { encoding: 'buffer' }, (eventType, filename) => {
   if (filename) {
   if (filename) {
سطر 221: سطر 208:
});
});
</syntaxhighlight>
</syntaxhighlight>
=== الحدث <code>'error'</code> ===
===الحدث <code>'error'</code>===
أضيف في الإصدار: v10.10.0.
أضيف في الإصدار: v10.10.0.
يُطلَق هذا الحدث متى ما توقف المراقب (watcher) عن مراقبة التغييرات. لن يكون الكائن <code>fs.FSWatcher‎</code> قابلًا للاستعمال في معالج الحدث بعد إغلاقه.
 
=== الحدث <code>'close'</code> ===
يُطلَق هذا الحدث متى ما توقف المراقب (watcher) عن مراقبة التغييرات. لن يكون الكائن <code>[[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.FSWatcher.E2.80.8E|fs.FSWatcher‎]]</code> قابلًا للاستعمال في معالج الحدث بعد إغلاقه.
===الحدث <code>'close'</code>===
أضيف في الإصدار: v0.5.8.
أضيف في الإصدار: v0.5.8.
* <code>error‎</code>: ‏[[JavaScript/Error|<Error>]]
*<code>error‎</code>: ‏[[JavaScript/Error|<Error>]]
يُطلَق هذا الحدث عندما يحدث خطأٌ أثناء عملية مراقبة الملف. لن يكون الكائن <code>fs.FSWatcher‎</code> الذي حصل خطأٌ فيه قابلًا للاستعمال في معالج الحدث.
يُطلَق هذا الحدث عندما يحدث خطأٌ أثناء عملية مراقبة الملف. لن يكون الكائن <code>[[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.FSWatcher.E2.80.8E|fs.FSWatcher]]‎</code> الذي حصل خطأٌ فيه قابلًا للاستعمال في معالج الحدث.
=== <code>watcher.close()‎</code> ===
===<code>watcher.close()‎</code>===
أضيف في الإصدار: v0.5.8.
أضيف في الإصدار: v0.5.8. يوقف هذا التابع عملية مراقبة التغييرات في الكائن [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.FSWatcher.E2.80.8E|<code>fs.FSWatcher</code>]] المعطى. متى ما استدعي هذا التابع، لن يعد الكائن [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.FSWatcher.E2.80.8E|<code>fs.FSWatcher</code>]] المُمرَّر إليه قابلًا للاستعمال بعد ذلك الحين.
يوقف هذا التابع عملية مراقبة التغييرات في الكائن <code>fs.FSWatcher‎</code> المعطى. متى ما استدعي هذا التابع، لن يعد الكائن <code>fs.FSWatcher‎</code> المُمرَّر إليه قابلًا للاستعمال بعد ذلك الحين.
==الصنف <code>fs.ReadStream‎</code>==
== الصنف <code>fs.ReadStream‎</code> ==
أضيف في الإصدار: v0.1.9.3.
أضيف في الإصدار: v0.1.9.3.
سيعيد الاستدعاء الناجح للتابع <code>fs.createReadStream()‎</code> كائنًا جديدًا من النوع <code>fs.ReadStream‎</code>. تُعدُّ جميع الكائنات <code>fs.ReadStream<code> مجارٍ قابلةٍ للقراءة (Readable Streams).
 
=== الحدث <code>'close'</code> ===
سيعيد الاستدعاء الناجح للتابع <code>[[Node.js/fs#fs.createReadStream.28path.5B.2C options.5D.29.E2.80.8E|fs.createReadStream()‎]]</code> كائنًا جديدًا من النوع <code>fs.ReadStream‎</code>. تُعدُّ جميع الكائنات <code>fs.ReadStream</code> مجارٍ قابلةٍ للقراءة (Readable Streams).
===الحدث <code>'close'</code>===
أضيف في الإصدار: v0.1.93.
أضيف في الإصدار: v0.1.93.
يُطلَق هذا الحدث عندما يُغلَق واصف الملف الموجود ضمنيًّا في الكائن <code>fs.ReadStream‎</code>.
يُطلَق هذا الحدث عندما يُغلَق واصف الملف الموجود ضمنيًّا في الكائن <code>fs.ReadStream‎</code>.
=== الحدث <code>'open'</code> ===
===الحدث <code>'open'</code>===
أضيف في الإصدار: v0.1.93.
أضيف في الإصدار: v0.1.93.
* <code>fd‎</code>:‏ [[JavaScript/Number|<integer>]]  عدد صحيح يمثل واصف الملف الذي استعمله الكائن <code>ReadStream‎</code>.
*<code>fd‎</code>:‏ [[JavaScript/Number|<integer>]]  عدد صحيح يمثل واصف الملف الذي استعمله الكائن <code>ReadStream‎</code>.
يُطلَق هذا الحدث عندما يُفتَح واصف الملف للكائن <code>fs.ReadStream</code>.
يُطلَق هذا الحدث عندما يُفتَح واصف الملف للكائن <code>fs.ReadStream</code>.
=== الحدث <code>'ready'</code> ===
===الحدث <code>'ready'</code>===
أضيف في الإصدار: v9.11.0.
أضيف في الإصدار: v9.11.0. يُطلَق هذا الحدث عندما يكون الكائن <code>fs.ReadStream‎</code> جاهزًا للاستعمال؛ أي يُطلَق بعد الحدث <code>'open'</code> مباشرةً.
يُطلَق هذا الحدث عندما يكون الكائن <code>fs.ReadStream‎</code> جاهزًا للاستعمال؛ أي يُطلَق بعد الحدث <code>'open'</code> مباشرةً.
===<code>readStream.bytesRead‎</code>===
=== <code>readStream.bytesRead‎</code> ===
أضيفت في الإصدار: v6.4.0.
أضيفت في الإصدار: v6.4.0.
* [[JavaScript/Number|<number>]]
*[[JavaScript/Number|<number>]]
تمثِّل هذه الخاصية عدد البايتات التي قُرأَت حين استدعائها.
تمثِّل هذه الخاصية عدد البايتات التي قُرأَت حين استدعائها.
=== <code>readStream.path‎</code> ===
===<code>readStream.path‎</code>===
أضيفت في الإصدار: v0.1.93.
أضيفت في الإصدار: v0.1.93.
* [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
*[[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
تمثِّل هذه الخاصية مسار الملف الذي يُقرَأ المجرى منه كما حُدِّد في الوسيط الأول المُمرَّر إلى <code>fs.createReadStream()‎</code>. إن كان المسار <code>path‎</code> المُمرَّر سلسلةً نصيةً، فستعيد الخاصية <code>readStream.path‎</code> سلسلةً نصيةً أيضًا. أمَّا إن كان المسار <code>path‎</code> المُمرَّر كائنًا من النوع <code>Buffer‎</code>، فستعيد الخاصية <code>readStream.path‎</code> كائنًا من النوع <code>Buffer‎</code> أيضًا.
تمثِّل هذه الخاصية مسار الملف الذي يُقرَأ المجرى منه كما حُدِّد في الوسيط الأول المُمرَّر إلى <code>[[Node.js/fs#fs.createReadStream.28path.5B.2C options.5D.29.E2.80.8E|fs.createReadStream()‎]]</code>. إن كان المسار <code>path‎</code> المُمرَّر سلسلةً نصيةً، فستعيد الخاصية <code>readStream.path‎</code> سلسلةً نصيةً أيضًا. أمَّا إن كان المسار <code>path‎</code> المُمرَّر كائنًا من النوع <code>Buffer‎</code>، فستعيد الخاصية <code>readStream.path‎</code> كائنًا من النوع <code>[[Node.js/buffer|Buffer‎]]</code> أيضًا.
== الصنف <code>fs.Stats‎</code> ==
==الصنف <code>fs.Stats‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
الإصدار
!الإصدار
التغييرات
!التغييرات
v8.1.0
|-
أضيفت الأزمنة كأعداد.
|v8.1.0
v0.1.21
|أضيفت الأزمنة كأعداد.
أضيف هذا الصنف.
|-
 
|v0.1.21
يوفِّر الكائن <code>fs.Stats‎</code> معلومات عن أي ملف. جميع الكائنات المعادة من التوابع <code>fs.stat()‎</code>، و <code>fs.lstat()‎</code>، و <code>fs.fstat()‎</code>، ونظيراتها المتزامنة هي من هذا الصنف. إن كانت قيمة الخيار <code>bigint‎</code> في الوسيط <code>options‎</code> المُمرَّر إلى هذه التوابع هي <code>true‎</code>، فستكون القيم العددية من النوع <code>bigint‎</code> بدلًا من <code>number‎</code>.
|أضيف هذا الصنف.
<syntaxhighlight lang="javascript">Stats {
|}يوفِّر الكائن <code>fs.Stats‎</code> معلومات عن أي ملف. جميع الكائنات المعادة من التوابع <code>[[Node.js/fs#.E2.80.8Efs.stat.28path.5B.2C options.5D.2C callback.29|fs.stat()‎]]</code>، و <code>[[Node.js/fs#fs.lstat.28path.5B.2C options.5D.2C callback.29.E2.80.8E|fs.lstat()‎]]</code>، و <code>[[Node.js/fs#fs.fstat.28fd.5B.2C options.5D.2C callback.29.E2.80.8E|fs.fstat()‎]]</code>، ونظيراتها المتزامنة هي من هذا الصنف. إن كانت قيمة الخيار <code>bigint‎</code> في الوسيط <code>options‎</code> المُمرَّر إلى هذه التوابع هي <code>true‎</code>، فستكون القيم العددية من النوع <code>bigint‎</code> بدلًا من <code>number‎</code>.<syntaxhighlight lang="javascript">Stats {
   dev: 2114,
   dev: 2114,
   ino: 48064969,
   ino: 48064969,
سطر 282: سطر 270:
   ctime: Mon, 10 Oct 2011 23:24:11 GMT,
   ctime: Mon, 10 Oct 2011 23:24:11 GMT,
   birthtime: Mon, 10 Oct 2011 23:24:11 GMT }
   birthtime: Mon, 10 Oct 2011 23:24:11 GMT }
</syntaxhighlight>
</syntaxhighlight>سيُعاد المثال السابق ولكن مع ضبط الخيار <code>bigint‎</code> في الوسيط <code>options‎</code> إلى القيمة <code>true‎</code>:<syntaxhighlight lang="javascript">Stats {
سيُعاد المثال السابق ولكن مع ضبط الخيار <code>bigint‎</code> في الوسيط <code>options‎</code> إلى القيمة <code>true‎</code>:
<syntaxhighlight lang="javascript">Stats {
   dev: 2114n,
   dev: 2114n,
   ino: 48064969n,
   ino: 48064969n,
سطر 304: سطر 290:
   birthtime: Mon, 10 Oct 2011 23:24:11 GMT }
   birthtime: Mon, 10 Oct 2011 23:24:11 GMT }
</syntaxhighlight>
</syntaxhighlight>
=== <code>stats.isBlockDevice()‎</code> ===
===<code>stats.isBlockDevice()‎</code>===
أضيف في الإصدار: v0.1.10.
أضيف في الإصدار: v0.1.10.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Stats‎</code> يمثِّل جهازًا كتليًّا (block device)، أو القيمة <code>false‎</code> خلاف ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>[[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.Stats.E2.80.8E|fs.Stats‎]]</code> يمثِّل جهازًا كتليًّا (block device)، أو القيمة <code>false‎</code> خلاف ذلك.
=== <code>stats.isCharacterDevice()‎</code> ===
===<code>stats.isCharacterDevice()‎</code>===
أضيف في الإصدار: v0.1.10.
أضيف في الإصدار: v0.1.10.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Stats‎</code> يمثِّل جهازًا محرفيًّا (character device)، أو القيمة <code>false‎</code> خلاف ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.Stats.E2.80.8E|<code>fs.Stats‎</code>]] يمثِّل جهازًا محرفيًّا (character device)، أو القيمة <code>false‎</code> خلاف ذلك.
=== <code>stats.isDirectory()‎</code> ===
===<code>stats.isDirectory()‎</code>===
أضيف في الإصدار: v0.1.10.
أضيف في الإصدار: v0.1.10.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Stats‎</code> يمثِّل مجلَّدًا في نظام الملفات (file system directory)، أو القيمة <code>false‎</code> خلاف ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.Stats.E2.80.8E|<code>fs.Stats‎</code>]] يمثِّل مجلَّدًا في نظام الملفات (file system directory)، أو القيمة <code>false‎</code> خلاف ذلك.
=== <code>stats.isFIFO()‎</code> ===
===<code>stats.isFIFO()‎</code>===
أضيف في الإصدار: v0.1.10.
أضيف في الإصدار: v0.1.10.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Stats‎</code> يمثِّل الأنبوب FIFO (اختصارٌ للعبارة first-in-first-out أي «من دخل أولًا يخرج أولًا»، كما يدعى أحيانًا «أنبوبًا مسمًى»)، أو القيمة <code>false‎</code> خلاف ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.Stats.E2.80.8E|<code>fs.Stats‎</code>]] يمثِّل الأنبوب FIFO (اختصارٌ للعبارة first-in-first-out أي «من دخل أولًا يخرج أولًا»، كما يدعى أحيانًا «أنبوبًا مسمًى»)، أو القيمة <code>false‎</code> خلاف ذلك.
=== <code>stats.isFile()‎</code> ===
===<code>stats.isFile()‎</code>===
أضيف في الإصدار: v0.1.10.
أضيف في الإصدار: v0.1.10.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Stats‎</code> يمثِّل ملفًا طبيعيًّا، أو القيمة <code>false‎</code> خلاف ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.Stats.E2.80.8E|<code>fs.Stats‎</code>]] يمثِّل ملفًا طبيعيًّا، أو القيمة <code>false‎</code> خلاف ذلك.
=== <code>stats.isSocket()‎</code> ===
===<code>stats.isSocket()‎</code>===
أضيف في الإصدار: v0.1.10.
أضيف في الإصدار: v0.1.10.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Stats‎</code> يمثِّل مقبسًا (socket)، أو القيمة <code>false‎</code> خلاف ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.Stats.E2.80.8E|<code>fs.Stats‎</code>]] يمثِّل مقبسًا (socket)، أو القيمة <code>false‎</code> خلاف ذلك.
=== <code>stats.isSymbolicLink()‎</code> ===
===<code>stats.isSymbolicLink()‎</code>===
أضيف في الإصدار: v0.1.10.
أضيف في الإصدار: v0.1.10.
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن <code>fs.Stats‎</code> يمثِّل وصلةً رمزيَّةً (symbolic link)، أو القيمة <code>false‎</code> خلاف ذلك.
يعيد هذا التابع القيمة <code>true‎</code> إن كان الكائن [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.Stats.E2.80.8E|<code>fs.Stats‎</code>]] يمثِّل وصلةً رمزيَّةً (symbolic link)، أو القيمة <code>false‎</code> خلاف ذلك.
=== <code>stats.dev‎</code> ===
===<code>stats.dev‎</code>===
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية المعرِّف العددي للجهاز الذي يحوي الملف.
تمثِّل هذه الخاصية المعرِّف العددي للجهاز الذي يحوي الملف.
=== <code>stats.ino</code> ===
===<code>stats.ino</code>===
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية رقم مؤشِّر الفهرسة (inode) لنظام الملفات المحدَّد.
تمثِّل هذه الخاصية رقم مؤشِّر الفهرسة (inode) لنظام الملفات المحدَّد.
=== <code>stats.mode</code> ===
===<code>stats.mode</code>===
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية حقلًا بتيًّا (bit-field) يصف نوع الملف ووضعه.
تمثِّل هذه الخاصية حقلًا بتيًّا (bit-field) يصف نوع الملف ووضعه.
=== <code>stats.nlink</code> ===
===<code>stats.nlink</code>===
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية عدد الوصلات الصلبة (hard-links) الموجود للملف.
تمثِّل هذه الخاصية عدد الوصلات الصلبة (hard-links) الموجود للملف.
=== <code>stats.uid</code> ===
===<code>stats.uid</code>===
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية معرِّف المستخدم العددي (UID) للمستخدم المالك للملف (في أنظمة POSIX).
تمثِّل هذه الخاصية معرِّف المستخدم العددي (UID) للمستخدم المالك للملف (في أنظمة POSIX).
=== <code>stats.gid</code> ===
===<code>stats.gid</code>===
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية معرِّف المجموعة العددي (GID) للمجموعة المالكة للملف (في أنظمة POSIX).
تمثِّل هذه الخاصية معرِّف المجموعة العددي (GID) للمجموعة المالكة للملف (في أنظمة POSIX).
=== <code>stats.rdev</code> ===
===<code>stats.rdev</code>===
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية معرِّف الجهاز العددي إن عُدَّ الملف «خاصًّا» (special).
تمثِّل هذه الخاصية معرِّف الجهاز العددي إن عُدَّ الملف «خاصًّا» (special).
=== <code>stats.size</code> ===
===<code>stats.size</code>===
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية حجم الملف بالبايت.
تمثِّل هذه الخاصية حجم الملف بالبايت.
=== <code>stats.blksize</code> ===
===<code>stats.blksize</code>===
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية حجم الكتلة (block size) لنظام الملفات من أجل عمليات الإدخال والإخراج (i/o).
تمثِّل هذه الخاصية حجم الكتلة (block size) لنظام الملفات من أجل عمليات الإدخال والإخراج (i/o).
=== <code>stats.blocks</code> ===
===<code>stats.blocks</code>===
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية عدد الكتل المحجوزة لهذا الملف.
تمثِّل هذه الخاصية عدد الكتل المحجوزة لهذا الملف.
=== <code>stats.atimeMs</code> ===
===<code>stats.atimeMs</code>===
أضيفت في الإصدار: v8.1.0.
أضيفت في الإصدار: v8.1.0.
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت تم الوصول فيه إلى هذا الملف معبَّرًا عنها بالميلي ثانية منذ عهد POSIX.
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت تم الوصول فيه إلى هذا الملف معبَّرًا عنها بالميلي ثانية منذ عهد POSIX.
=== <code>stats.mtimeMs</code> ===
===<code>stats.mtimeMs</code>===
أضيفت في الإصدار: v8.1.0.
أضيفت في الإصدار: v8.1.0.
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية بصمة الوقت (timestamp) التي تشير إلى آخر وقت عُدِّل فيه هذا الملف معبَّرًا عنها بالميلي ثانية منذ عهد POSIX.
تمثِّل هذه الخاصية بصمة الوقت (timestamp) التي تشير إلى آخر وقت عُدِّل فيه هذا الملف معبَّرًا عنها بالميلي ثانية منذ عهد POSIX.
=== <code>stats.ctimeMs</code> ===
===<code>stats.ctimeMs</code>===
أضيفت في الإصدار: v8.1.0.
أضيفت في الإصدار: v8.1.0.
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت عُدِّلَت فيه حالة هذا الملف معبَّرًا عنها بالميلي ثانية منذ عهد POSIX.
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت عُدِّلَت فيه حالة هذا الملف معبَّرًا عنها بالميلي ثانية منذ عهد POSIX.
=== <code>stats.birthtimeMs</code> ===
===<code>stats.birthtimeMs</code>===
أضيفت في الإصدار: v8.1.0.
أضيفت في الإصدار: v8.1.0.
* [[JavaScript/Number|<number>]]‏ | <bigint>
*[[JavaScript/Number|<number>]]‏ | [https://github.com/tc39/proposal-bigint <bigint>]
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى وقت إنشاء هذا الملف معبَّرًا عنها بالميلي ثانية منذ عهد POSIX.
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى وقت إنشاء هذا الملف معبَّرًا عنها بالميلي ثانية منذ عهد POSIX.
=== <code>stats.atime</code> ===
===<code>stats.atime</code>===
أضيفت في الإصدار: v0.11.13.
أضيفت في الإصدار: v0.11.13.
* [[JavaScript/Date|<Date>]]
*[[JavaScript/Date|<Date>]]
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت تم الوصول فيه إلى هذا الملف.
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت تم الوصول فيه إلى هذا الملف.
=== <code>stats.mtime</code> ===
===<code>stats.mtime</code>===
أضيفت في الإصدار: v0.11.13.
أضيفت في الإصدار: v0.11.13.
* [[JavaScript/Date|<Date>]]
*[[JavaScript/Date|<Date>]]
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت عُدِّل فيه هذا الملف.
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت عُدِّل فيه هذا الملف.
=== <code>stats.ctime</code> ===
===<code>stats.ctime</code>===
أضيفت في الإصدار: v0.11.13.
أضيفت في الإصدار: v0.11.13.
* [[JavaScript/Date|<Date>]]
*[[JavaScript/Date|<Date>]]
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت عُدِّلَت فيه حالة هذا الملف.
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت عُدِّلَت فيه حالة هذا الملف.
=== <code>stats.birthtime</code> ===
===<code>stats.birthtime</code>===
أضيفت في الإصدار: v0.11.13.
أضيفت في الإصدار: v0.11.13.
* [[JavaScript/Date|<Date>]]
*[[JavaScript/Date|<Date>]]
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى وقت إنشاء هذا الملف.
تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى وقت إنشاء هذا الملف.
=== قيم الوقت في الكائن <code>Stats‎</code> ===
===قيم الوقت في الكائن <code>Stats‎</code>===
إن جميع الخاصيات <code>atimeMs‎</code>، و <code>mtimeMs‎</code>، و <code>ctimeMs‎</code>، و <code>birthtimeMs‎</code> هي أعدادٌ تمثِّل أزمنةً بالميلي ثانية، وتعتمد دقتها على المنصة المستعملة. أمَّا الخاصيات <code>atime‎</code>، و  <code>mtime</code>، و  <code>ctime</code>، و  <code>birthtime</code>، فهي كائنات من النوع <code>Date‎</code> (أي تواريخ) تمثل أزمنةً وأوقاتًا مختلفةً. انتبه إلى أنَّ قيم الكائن <code>Date<code> (التاريخ) والكائن <code>number‎</code> (الزمن) -لتلك الخاصيات- غير مترابطة مع بعضها بعضًا؛ أي إسناد قيمةٌ جديدةٌ لأحدهما لن ينعكس على القيمة المقابلة البديلة للآخر.
إن جميع الخاصيات <code>atimeMs‎</code>، و <code>mtimeMs‎</code>، و <code>ctimeMs‎</code>، و <code>birthtimeMs‎</code> هي أعدادٌ تمثِّل أزمنةً بالميلي ثانية، وتعتمد دقتها على المنصة المستعملة. أمَّا الخاصيات <code>atime‎</code>، و  <code>mtime</code>، و  <code>ctime</code>، و  <code>birthtime</code>، فهي كائنات من النوع <code>Date‎</code> (أي تواريخ) تمثل أزمنةً وأوقاتًا مختلفةً. انتبه إلى أنَّ قيم الكائن <code>Date</code> (التاريخ) والكائن <code>number‎</code> (الزمن) -لتلك الخاصيات- غير مترابطة مع بعضها بعضًا؛ أي إسناد قيمةٌ جديدةٌ لأحدهما لن ينعكس على القيمة المقابلة البديلة للآخر.
 
الأوقات في الكائن <code>Stats‎</code> لها الدلالات التالية:
الأوقات في الكائن <code>Stats‎</code> لها الدلالات التالية:
* <code>atime‎</code> (وقت الوصول): يمثِّل هذا الوقت آخر مرةٍ جرى فيها الوصول إلى البيانات. يتغيَّر باستعمال استدعاءات النظام <code>mknod(2)‎</code>، و <code>utimes(2)‎</code>، و <code>read(2)‎</code>.
*<code>atime‎</code> (وقت الوصول): يمثِّل هذا الوقت آخر مرةٍ جرى فيها الوصول إلى البيانات. يتغيَّر باستعمال استدعاءات النظام <code>mknod(2)‎</code>، و <code>utimes(2)‎</code>، و <code>read(2)‎</code>.
* <code>atime‎</code> (وقت التعديل): يمثِّل هذا الوقت آخر عملية تعديل أجريَت على البيانات. يتغيَّر باستعمال استدعاء النظام <code>mknod(2)‎</code>، و <code>utimes(2)‎</code>، و <code>write(2)‎</code>.
*<code>atime‎</code> (وقت التعديل): يمثِّل هذا الوقت آخر عملية تعديل أجريَت على البيانات. يتغيَّر باستعمال استدعاء النظام <code>mknod(2)‎</code>، و <code>utimes(2)‎</code>، و <code>write(2)‎</code>.
* <code>atime‎</code> (وقت التغيير): يمثِّل هذا الوقت آخرة مرةٍ تغيَّرَت فيها حالة الملف (تعديل بيانات مؤشِّر الفهرسة [inode]). يتغيَّر عبر استدعاءات النظام <code>chmod(2)‎</code>، و <code>chown(2)‎</code>، و <code>link(2)‎</code>، و <code>mknod(2)‎</code>، و <code>rename(2)‎</code>، و <code>unlink(2)‎</code> و <code>utimes(2)‎</code>، و <code>read(2)‎</code>، و <code>write(2)‎</code>.
*<code>atime‎</code> (وقت التغيير): يمثِّل هذا الوقت آخرة مرةٍ تغيَّرَت فيها حالة الملف (تعديل بيانات مؤشِّر الفهرسة [inode]). يتغيَّر عبر استدعاءات النظام <code>[http://man7.org/linux/man-pages/man2/chmod.2.html chmod(2)‎]</code>، و <code>[http://man7.org/linux/man-pages/man2/chown.2.html chown(2)]‎</code>، و <code>[http://man7.org/linux/man-pages/man2/link.2.html link(2)‎]</code>، و <code>[http://man7.org/linux/man-pages/man2/mknod.2.html mknod(2)‎]</code>، و <code>[http://man7.org/linux/man-pages/man2/rename.2.html rename(2)‎]</code>، و <code>[http://man7.org/linux/man-pages/man2/unlink.2.html unlink(2)‎]</code> و <code>[http://man7.org/linux/man-pages/man2/utimes.2.html utimes(2)‎]</code>، و <code>[http://man7.org/linux/man-pages/man2/read.2.html read(2)]‎</code>، و <code>[http://man7.org/linux/man-pages/man2/write.2.html write(2)‎]</code>.
* <code>atime‎</code> (وقت الإنشاء): يمثِّل وقت إنشاء الملف، إذ يُضبَط هذا الوقت عندما يُنشَأ الملف. في أنظمة الملفات التي لا يتوافر فيها وقت الإنشاء، قد يأخذ هذا الحقل قيمةً بديلةً هي إمَّا القيمة <code>ctime‎</code> أو القيمة <code>1970-01-01T00:00Z‎</code> (أي بصمة الوقت <code>0‎</code> في توقيت يونكس). في هذه الحالة، قد تكون هذه القيمة أكبر من القيمة <code>atime‎</code> أو <code>mtime‎</code>. في نظام التشغيل Darwin‎ وتوزيعات FreeBSD أخرى، تُضبَط هذه القيمة أيضًا إذا ضُبِطَت القيمة <code>atime‎</code> بشكل واضح إلى قيمة سابقة للقيمة <code>birthtime‎</code> الحالية باستعمال استدعاء النظام <code>utimes(2)‎</code>.
*<code>atime‎</code> (وقت الإنشاء): يمثِّل وقت إنشاء الملف، إذ يُضبَط هذا الوقت عندما يُنشَأ الملف. في أنظمة الملفات التي لا يتوافر فيها وقت الإنشاء، قد يأخذ هذا الحقل قيمةً بديلةً هي إمَّا القيمة <code>ctime‎</code> أو القيمة <code>1970-01-01T00:00Z‎</code> (أي بصمة الوقت <code>0‎</code> في توقيت يونكس). في هذه الحالة، قد تكون هذه القيمة أكبر من القيمة <code>atime‎</code> أو <code>mtime‎</code>. في نظام التشغيل Darwin‎ وتوزيعات FreeBSD أخرى، تُضبَط هذه القيمة أيضًا إذا ضُبِطَت القيمة <code>atime‎</code> بشكل واضح إلى قيمة سابقة للقيمة <code>birthtime‎</code> الحالية باستعمال استدعاء النظام <code>utimes(2)‎</code>.
قبل الإصدار Node.js 0.12، تأخذ القيمة <code>ctime‎</code> نفس القيمة <code>birthtime‎</code> في أنظمة ويندوز. بدءًا من الإصدار 0.12، لم تعد القيمة <code>ctime‎</code> تمثل «وقت الإنشاء»، ولم تكن كذلك مطلقًا في الأنظمة الشبيه بيونكس.
قبل الإصدار Node.js 0.12، تأخذ القيمة <code>ctime‎</code> نفس القيمة <code>birthtime‎</code> في أنظمة ويندوز. بدءًا من الإصدار 0.12، لم تعد القيمة <code>ctime‎</code> تمثل «وقت الإنشاء»، ولم تكن كذلك مطلقًا في الأنظمة الشبيه بيونكس.
== الصنف <code>fs.WriteStream‎</code> ==
==الصنف <code>fs.WriteStream‎</code>==
أضيف في الإصدار: v0.1.93.
أضيف في الإصدار: v0.1.93.
يمثل الكائن <code>WriteStream‎</code> مجرًى قابلًا للكتابة.
يمثل الكائن <code>WriteStream‎</code> مجرًى قابلًا للكتابة.
=== الحدث <code>'close'</code> ===
===الحدث <code>'close'</code>===
أضيف في الإصدار: v0.1.93.
أضيف في الإصدار: v0.1.93.
يُطلَق هذا الحدث عندما يُغلَق واصف الملف الموجود ضمنيًّا في الكائن <code>WriteStream</code>.
يُطلَق هذا الحدث عندما يُغلَق واصف الملف الموجود ضمنيًّا في الكائن <code>WriteStream</code>.
=== الحدث <code>'open'</code> ===
===الحدث <code>'open'</code>===
أضيف في الإصدار: v0.1.93.
أضيف في الإصدار: v0.1.93.
* <code>fd‎</code>:‏ [[JavaScript/Number|<integer>]]  عدد صحيح يمثل واصف الملف الذي استعمله الكائن <code>WriteStream</code>.
*<code>fd‎</code>:‏ [[JavaScript/Number|<integer>]]  عدد صحيح يمثل واصف الملف الذي استعمله الكائن <code>WriteStream</code>.
يُطلَق هذا الحدث عندما يُفتَح واصف الملف للكائن <code>WriteStream</code>.
يُطلَق هذا الحدث عندما يُفتَح واصف الملف للكائن <code>WriteStream</code>.
=== الحدث <code>'ready'</code> ===
===الحدث <code>'ready'</code>===
أضيف في الإصدار: v9.11.0.
أضيف في الإصدار: v9.11.0.
يُطلَق هذا الحدث عندما يكون الكائن <code>WriteStream</code> جاهزًا للاستعمال؛ أي يُطلَق بعد الحدث <code>'open'</code> مباشرةً.
 
=== <code>writeStream.bytesWritten</code> ===
يُطلَق هذا الحدث عندما يكون الكائن <code>WriteStream</code> جاهزًا للاستعمال؛ أي يُطلَق بعد الحدث <code>'open'</code> مباشرةً.
===<code>writeStream.bytesWritten</code>===
أضيفت في الإصدار: v0.4.7.
أضيفت في الإصدار: v0.4.7.
* [[JavaScript/Number|<number>]]
*[[JavaScript/Number|<number>]]
تمثِّل هذه الخاصية عدد البايتات التي كُتبَت حين استدعائها. لا تتضمن هذه القيمة حجم البيانات الموجودة في الطابور بانتظار كتابتها.
تمثِّل هذه الخاصية عدد البايتات التي كُتبَت حين استدعائها. لا تتضمن هذه القيمة حجم البيانات الموجودة في الطابور بانتظار كتابتها.
=== <code>readStream.path‎</code> ===
===<code>readStream.path‎</code>===
أضيفت في الإصدار: v0.1.93.
أضيفت في الإصدار: v0.1.93.
تمثِّل هذه الخاصية مسار الملف الذي يُكتَب المجرى فيه كما حُدِّد في الوسيط الأول المُمرَّر إلى <code>fs.createWriteStream()‎</code>. إن كان المسار <code>path‎</code> المُمرَّر سلسلةً نصيةً، فستعيد الخاصية <code>writeStream.path‎</code> سلسلةً نصيةً أيضًا. أمَّا إن كان المسار <code>path‎</code> المُمرَّر كائنًا من النوع <code>Buffer‎</code>، فستعيد الخاصية <code>writeStream.path‎</code> كائنًا من النوع <code>Buffer‎</code> أيضًا.
== <code>fs.access(path[, mode], callback)‎</code> ==
سجل التغييرات


الإصدار
تمثِّل هذه الخاصية مسار الملف الذي يُكتَب المجرى فيه كما حُدِّد في الوسيط الأول المُمرَّر إلى <code>[[Node.js/fs#fs.createWriteStream.28path.5B.2C options.5D.29.E2.80.8E|fs.createWriteStream()‎]]</code>. إن كان المسار <code>path‎</code> المُمرَّر سلسلةً نصيةً، فستعيد الخاصية <code>writeStream.path‎</code> سلسلةً نصيةً أيضًا. أمَّا إن كان المسار <code>path‎</code> المُمرَّر كائنًا من النوع <code>[[Node.js/buffer|Buffer‎]]</code>، فستعيد الخاصية <code>writeStream.path‎</code> كائنًا من النوع [[Node.js/buffer|<code>Buffer‎</code>]] أيضًا.
التغييرات
==<code>fs.access(path[, mode], callback)‎</code>==
v7.6.0
{| class="wikitable mw-collapsible"
يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|+سجل التغييرات
v6.3.0
!الإصدار
نُقلَت الثوابت مثل <code>fs.R_OK‎</code> وغيرها التي توجد مباشرةً في <code>fs‎</code> إلى <code>fs.constants‎</code> كإهمال مرن وسلسل. وبالتالي، استعمل <code>fs‎</code> في الإصدارات التي قبل v6.3.0 للوصول إلى هذه الثوابت، أو افعل شيئًا آخر مثل <code>(fs.constants || fs).R_OK‎</code> للعمل مع جميع الإصدارات بطريقة واحدة.
!التغييرات
v0.11.15
|-
أضيف هذا التابع.
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>[[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|URL‎]]</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم ''قيد التجريب''.
|-
|v6.3.0
|نُقلَت الثوابت مثل <code>fs.R_OK‎</code> وغيرها التي توجد مباشرةً في <code>fs‎</code> إلى fs.constants‎ كإهمال مرن وسلسل. وبالتالي، استعمل <code>fs‎</code> في الإصدارات التي قبل v6.3.0 للوصول إلى هذه الثوابت، أو افعل شيئًا آخر مثل <code><nowiki>(fs.constants || fs).R_OK‎</nowiki></code> للعمل مع جميع الإصدارات بطريقة واحدة.
|-
|v0.11.15
|أضيف هذا التابع.
|}
*<code>path‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>mode‎</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>fs.constants.F_OK‎</code>.
*<code>callback‎</code>:‏ [[JavaScript/Function|<Function>]]
**<code>‎err</code>:‏ [[JavaScript/Error|<Error>]]
يفحص هذا التابع أذونات المستخدم للملف أو المجلد المحدَّد في المسار <code>path‎</code>. الوسيط <code>mode‎</code> الاختياري هو عددٌ صحيحٌ يحدِّد عمليات التحقق من قابلية الوصول المراد تنفيذها. اطلع على القسم «ثوابت الوصول للملف» لمعرفة القيمة المتاحة للوسيط <code>mode‎</code>. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل <code>fs.constants.W_OK | fs.constants.R_OK‎</code>).


* <code>path‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
الوسيط الأخير، <code>callback‎</code>، هو دالة رد نداءٍ تُستدعَى مع وسيط الخطأ المحتمل حدوثه. إن فشلت إحدى عمليات التحقق من قابلية الوصول، فسيكون وسيط الخطأ الكائن <code>[[Node.js/errors#.D8.A7.D9.84.D8.B5.D9.86.D9.81 Error.E2.80.8E|Error‎]]</code>. يتحقق المثال التالي من وجود الملف <code>package.json‎</code> وإن كان قابلًا للقراءة أو الكتابة:<syntaxhighlight lang="javascript">const file = 'package.json';
* <code>mode‎</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>fs.constants.F_OK‎</code>.
* <code>callback‎</code>:‏ [[JavaScript/Function|<Function>]]
** <code>‎err</code>:‏ [[JavaScript/Error|<Error>]]
يفحص هذا التابع أذونات المستخدم للملف أو المجلد المحدَّد في المسار <code>path‎</code>. الوسيط <code>mode‎</code> الاختياري هو عددٌ صحيحٌ يحدِّد عمليات التحقق من قابلية الوصول المراد تنفيذها. اطلع على القسم «ثوابت الوصول للملف» لمعرفة القيمة المتاحة للوسيط <code>mode‎</code>. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل <code>fs.constants.W_OK | fs.constants.R_OK‎</code>).
الوسيط الأخير، <code>callback‎</code>، هو دالة رد نداءٍ تُستدعَى مع وسيط الخطأ المحتمل حدوثه. إن فشلت إحدى عمليات التحقق من قابلية الوصول، فسيكون وسيط الخطأ الكائن <code>Error‎</code>. يتحقق المثال التالي من وجود الملف <code>package.json‎</code> وإن كان قابلًا للقراءة أو الكتابة:
<syntaxhighlight lang="javascript">const file = 'package.json';


// التحقق من وجود الملف في المجلد الحالي
// التحقق من وجود الملف في المجلد الحالي
سطر 466: سطر 460:
   }
   }
});
});
</syntaxhighlight>
</syntaxhighlight>لا يُنصَح باستدعاء <code>fs.access()‎</code> للتحقُّق من قابلة الوصول للملف قبل استدعاء [[Node.js/fs#fs.open.28path.2C flags.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.open()‎]]، أو [[Node.js/fs#.E2.80.8Efs.readFile.28path.5B.2C options.5D.2C callback.29|fs.readFile()‎]]، أو [[Node.js/fs#fs.writeFile.28file.2C data.5B.2C options.5D.2C callback.29.E2.80.8E|fs.writeFile()‎]]، إذ يؤدي فعل ذلك إلى خلق «حالة تسابق» (race condition) لأنَّه ربما قد تُغيِّر عمليات أخرى حالة الملف بين الاستدعائين. بدلًا من ذلك، يجب على شيفرة المستخدم أن تفتح وتقرأ وتكتب في الملف مباشرةً وأن تعالج أي خطأ يُطلَق إن لم يكن الملف قابلًا للوصول.
لا يُنصَح باستدعاء <code>fs.access() ‎</code> للتحقُّق من قابلة الوصول للملف قبل استدعاء <code>fs.open()‎</code>، أو <code>fs.readFile()‎</code>، أو <code>fs.writeFile()‎</code>، إذ يؤدي فعل ذلك إلى خلق «حالة تسابق» (race condition) لأنَّه ربما قد تُغيِّر عمليات أخرى حالة الملف بين الاستدعائين. بدلًا من ذلك، يجب على شيفرة المستخدم أن تفتح وتقرأ وتكتب في الملف مباشرةً وأن تعالج أي خطأ يُطلَق إن لم يكن الملف قابلًا للوصول.
 
يوضح المثال التالي كيفية الكتابة على ملف بطريقةٍ لا يوصى بها:
يوضح المثال التالي كيفية الكتابة على ملف بطريقةٍ '''لا يوصى بها''':<syntaxhighlight lang="javascript">fs.access('myfile', (err) => {
<syntaxhighlight lang="javascript">fs.access('myfile', (err) => {
   if (!err) {
   if (!err) {
     console.error('myfile already exists');
     console.error('myfile already exists');
سطر 480: سطر 473:
   });
   });
});
});
أمَّا المثال التالي، فيوضح كيفية الكتابة على ملف بالطريقة المُثلَى:
 
<syntaxhighlight lang="javascript">fs.open('myfile', 'wx', (err, fd) => {
</syntaxhighlight>أمَّا المثال التالي، فيُوضِّح كيفية القراءة من ملف بالطريقة '''المُثلَى''':<syntaxhighlight lang="javascript">
fs.open('myfile', 'wx', (err, fd) => {
   if (err) {
   if (err) {
     if (err.code === 'EEXIST') {
     if (err.code === 'EEXIST') {
سطر 493: سطر 487:
   writeMyData(fd);
   writeMyData(fd);
});
});
يوضح المثال التالي كيفية القراءة من ملف بطريقة لا يوصى بها:
 
<syntaxhighlight lang="javascript">fs.access('myfile', (err) => {
</syntaxhighlight>يوضح المثال التالي كيفية القراءة من ملف بطريقة '''لا يوصى بها''':<syntaxhighlight lang="javascript">
fs.access('myfile', (err) => {
   if (err) {
   if (err) {
     if (err.code === 'ENOENT') {
     if (err.code === 'ENOENT') {
سطر 509: سطر 504:
   });
   });
});
});
أمَّا المثال التالي، فيُوضِّح كيفية القراءة من ملف بالطريقة المُثلَى:
 
</syntaxhighlight>أمَّا المثال التالي، فيُوضِّح كيفية القراءة من ملف بالطريقة '''المُثلَى''':<syntaxhighlight lang="javascript">
fs.open('myfile', 'r', (err, fd) => {
fs.open('myfile', 'r', (err, fd) => {
   if (err) {
   if (err) {
سطر 522: سطر 518:
   readMyData(fd);
   readMyData(fd);
});
});
</syntaxhighlight>
تتحقَّق الأمثلة التي «لا يوصى باتباعها» من قابلة الوصول ثمَّ تستعمل الملف؛ أمَّا الأمثلة التي «يوصى باتباعها»، فهي أفضل لأنَّها تستعمل الملف مباشرةً وتعالج الخطأ إن حصل.
عمومًا، يُتحقَّق من قابلة الوصول للملف في حال استعمال الملف بشكل غير مباشر مثل عندما تكون قابلية وصول ملف إشارةً من عملية أخرى.
== <code>fs.accessSync(path[, mode])‎</code> ==
سجل التغييرات


الإصدار
</syntaxhighlight>تتحقَّق الأمثلة التي «لا يوصى باتباعها» من قابلة الوصول ثمَّ تستعمل الملف؛ أمَّا الأمثلة التي «يوصى باتباعها»، فهي أفضل لأنَّها تستعمل الملف مباشرةً وتعالج الخطأ إن حصل.
التغييرات
v7.6.0
يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v0.11.15
أضيف هذا التابع.


* <code>path‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
عمومًا، يُتحقَّق من قابلة الوصول للملف في حال استعمال الملف بشكل غير مباشر مثل عندما تكون قابلية وصول ملف إشارةً من عملية أخرى.
* <code>mode‎</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>fs.constants.F_OK‎</code>.
==<code>fs.accessSync(path[, mode])‎</code>==
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>[[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|URL‎]]</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم ''قيد التجريب''.
|-
|v0.11.15
|أضيف هذا التابع.
|}
*<code>path‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>mode‎</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>fs.constants.F_OK‎</code>.
يفحص هذا التابع بشكل متزامن أذونات المستخدم للملف أو المجلد المحدَّد في المسار <code>path‎</code>. الوسيط <code>mode‎</code> الاختياري هو عدد صحيح يحدِّد عمليات التحقُّق من قابلية الوصول المراد تنفيذها. اطلع على القسم «ثوابت الوصول للملف» لمعرفة القيمة المتاحة للوسيط <code>mode‎</code>. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل <code>fs.constants.W_OK | fs.constants.R_OK‎</code>).
يفحص هذا التابع بشكل متزامن أذونات المستخدم للملف أو المجلد المحدَّد في المسار <code>path‎</code>. الوسيط <code>mode‎</code> الاختياري هو عدد صحيح يحدِّد عمليات التحقُّق من قابلية الوصول المراد تنفيذها. اطلع على القسم «ثوابت الوصول للملف» لمعرفة القيمة المتاحة للوسيط <code>mode‎</code>. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل <code>fs.constants.W_OK | fs.constants.R_OK‎</code>).
إن فشلت إحدى عمليات قابلية الوصول، فيُسرمَى الخطأ <code>Error‎</code>. خلا ذلك، سيعيد التابع القيمة <code>undefined‎</code>.
 
<syntaxhighlight lang="javascript">try {
إن فشلت إحدى عمليات قابلية الوصول، فيُسرمَى الخطأ <code>[[Node.js/errors#.D8.A7.D9.84.D8.B5.D9.86.D9.81 Error.E2.80.8E|Error‎]]</code>. خلا ذلك، سيعيد التابع القيمة <code>[[JavaScript/undefined|undefined‎]]</code>.<syntaxhighlight lang="javascript">try {
   fs.accessSync('etc/passwd', fs.constants.R_OK | fs.constants.W_OK);
   fs.accessSync('etc/passwd', fs.constants.R_OK | fs.constants.W_OK);
   console.log('can read/write');
   console.log('can read/write');
سطر 546: سطر 545:
}
}
</syntaxhighlight>
</syntaxhighlight>
== <code>fs.appendFile(path, data[, options], callback)‎</code> ==
==<code>fs.appendFile(path, data[, options], callback)‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
الإصدار
!الإصدار
التغييرات
!التغييرات
v10.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|v10.0.0
v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
v7.0.0
|v7.0.0
لن يُغيَّر المعامل <code>options‎</code> المُمرَّر مطلقًا.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v5.0.0
|-
يمكن للمعامل <code>file‎</code> أن يكون واصف ملفٍ الآن.
|v7.0.0
v0.6.7
|لن يُغيَّر المعامل <code>options</code> المُمرَّر مطلقًا.
أضيف هذا التابع.
|-
 
|v5.0.0
* <code>path‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<number>]] اسم أو واصف الملف.
|يمكن للمعامل <code>file‎</code> أن يكون واصف ملفٍ الآن.
* <code>data‎</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]
|-
* <code>options‎</code>:‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
|v0.6.7
** <code>encoding‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
|أضيف هذا التابع.
** <code>mode‎</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
|}
** <code>mode‎</code>:‏ [[JavaScript/String|<string>]] ارجع إلى القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'a'</code>.
*<code>path‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<number>]] اسم أو واصف الملف.
* <code>callback‎</code>:‏ [[JavaScript/Function|<Function>]]
*<code>data‎</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]
** <code>err‎</code>:‏ [[JavaScript/Error|<Error>]]
*<code>options‎</code>:‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
يضيف هذا التابع بشكل غير متزامن بياناتٍ إلى ملف، أو ينشئ ملفًا ويضع البيانات فيه إن لم يكن هذا الملف موجودًا. يمكن أن تكون البيانات <code>data‎</code> المراد كتابتها سلسلةً نصيةً أو كائنًا من النوع <code>Buffer‎</code>.
**<code>encoding‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
<syntaxhighlight lang="javascript">fs.appendFile('message.txt', 'data to append', (err) => {
**<code>mode‎</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
**<code>mode‎</code>:‏ [[JavaScript/String|<string>]] ارجع إلى القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'a'</code>.
*<code>callback‎</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err‎</code>:‏ [[JavaScript/Error|<Error>]]
يضيف هذا التابع بشكل غير متزامن بياناتٍ إلى ملف، أو ينشئ ملفًا ويضع البيانات فيه إن لم يكن هذا الملف موجودًا. يمكن أن تكون البيانات <code>data‎</code> المراد كتابتها سلسلةً نصيةً أو كائنًا من النوع <code>[[Node.js/buffer|Buffer‎]]</code>.<syntaxhighlight lang="javascript">fs.appendFile('message.txt', 'data to append', (err) => {
   if (err) throw err;
   if (err) throw err;
   console.log('The "data to append" was appended to file!');
   console.log('The "data to append" was appended to file!');
});
});
</syntaxhighlight>
</syntaxhighlight>إن كان الوسيط <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز:<syntaxhighlight lang="javascript">fs.appendFile('message.txt', 'data to append', 'utf8', callback);
إن كان الوسيط <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز:
</syntaxhighlight>يمكن أن يُعطَى المسار <code>path‎</code> قيمةً عدديةً تمثِّل واصف الملف الذي فُتِح لإضافة البيانات فيه (باستعمال <code>[[Node.js/fs#fs.open.28path.2C flags.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.open()‎]]</code> أو <code>[[Node.js/fs#.E2.80.8Efs.openSync.28path.2C flags.5B.2C mode.5D.29|fs.openSync()‎]]</code>). لن يُغلَق واصف الملف بشكل تلقائي.<syntaxhighlight lang="javascript">fs.open('message.txt', 'a', (err, fd) => {
<syntaxhighlight lang="javascript">fs.appendFile('message.txt', 'data to append', 'utf8', callback);
</syntaxhighlight>
يمكن أن يُعطَى المسار <code>path‎</code> قيمةً عدديةً تمثِّل واصف الملف الذي فُتِح لإضافة البيانات فيه (باستعمال <code>fs.open()‎</code> أو <code>fs.openSync()‎</code>). لن يُغلَق واصف الملف بشكل تلقائي.
<syntaxhighlight lang="javascript">fs.open('message.txt', 'a', (err, fd) => {
   if (err) throw err;
   if (err) throw err;
   fs.appendFile(fd, 'data to append', 'utf8', (err) => {
   fs.appendFile(fd, 'data to append', 'utf8', (err) => {
سطر 589: سطر 588:
   });
   });
});
});
</syntaxhighlight>  
</syntaxhighlight>
== <code>fs.appendFileSync(path, data[, options])‎</code> ==
==<code>fs.appendFileSync(path, data[, options])‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
الإصدار
!الإصدار
التغييرات
!التغييرات
v7.0.0
|-
لن يُغيِّر المعامل <code>options‎</code> المُمرَّر مطلقًا.
|v7.0.0
v5.0.0
|لن يُغيِّر المعامل <code>options</code> المُمرَّر مطلقًا.
يمكن للمعامل <code>file‎</code> أن يكون واصف ملفٍ الآن.
|-
v0.6.7
|v5.0.0
أضيف هذا التابع.
|يمكن للمعامل <code>file‎</code> أن يكون واصف ملفٍ الآن.
 
|-
* <code>path‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<number>]] اسم أو واصف الملف.
|v0.6.7
* <code>data‎</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]
|أضيف هذا التابع.
* <code>options‎</code>:‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
|}
** <code>encoding‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
*<code>path‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<number>]] اسم أو واصف الملف.
** <code>mode‎</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
*<code>data‎</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]
** <code>mode‎</code>:‏ [[JavaScript/String|<string>]] ارجع إلى القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'a'</code>.
*<code>options‎</code>:‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
يضيف هذا التابع بشكل متزامن بياناتٍ إلى ملف، أو ينشئ ملفًا ويضع البيانات فيه إن لم يكن هذا الملف موجودًا. يمكن أن تكون البيانات <code>data‎</code> المراد كتابتها سلسلةً نصيةً أو كائنًا من النوع <code>Buffer‎</code>.
**<code>encoding‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
<syntaxhighlight lang="javascript">try {
**<code>mode‎</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
**<code>mode‎</code>:‏ [[JavaScript/String|<string>]] ارجع إلى القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'a'</code>.
يضيف هذا التابع بشكل متزامن بياناتٍ إلى ملف، أو ينشئ ملفًا ويضع البيانات فيه إن لم يكن هذا الملف موجودًا. يمكن أن تكون البيانات <code>data‎</code> المراد كتابتها سلسلةً نصيةً أو كائنًا من النوع <code>Buffer‎</code>.<syntaxhighlight lang="javascript">try {
   fs.appendFileSync('message.txt', 'data to append');
   fs.appendFileSync('message.txt', 'data to append');
   console.log('The "data to append" was appended to file!');
   console.log('The "data to append" was appended to file!');
سطر 615: سطر 616:
   // عالج الخطأ (إن حصل) هنا
   // عالج الخطأ (إن حصل) هنا
}
}
</syntaxhighlight>
</syntaxhighlight>إن كان الوسيط <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز:<syntaxhighlight lang="javascript">fs.appendFileSync('message.txt', 'data to append', 'utf8');
إن كان الوسيط <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز:
</syntaxhighlight>يمكن أن يُعطَى المسار <code>path‎</code> قيمةً عدديةً تمثُّل واصف الملف الذي فُتِح لإضافة البيانات فيه (باستعمال <code>[[Node.js/fs#fs.open.28path.2C flags.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.open()]]‎</code> أو <code>[[Node.js/fs#.E2.80.8Efs.openSync.28path.2C flags.5B.2C mode.5D.29|fs.openSync()‎]]</code>). لن يُغلَق واصف الملف بشكل تلقائي.<syntaxhighlight lang="javascript">let fd;
<syntaxhighlight lang="javascript">fs.appendFileSync('message.txt', 'data to append', 'utf8');
</syntaxhighlight>
يمكن أن يُعطَى المسار <code>path‎</code> قيمةً عدديةً تمثُّل واصف الملف الذي فُتِح لإضافة البيانات فيه (باستعمال <code>fs.open()‎</code> أو <code>fs.openSync()‎</code>). لن يُغلَق واصف الملف بشكل تلقائي.
<syntaxhighlight lang="javascript">let fd;


try {
try {
سطر 631: سطر 628:
     fs.closeSync(fd);
     fs.closeSync(fd);
}
}
</syntaxhighlight>  
</syntaxhighlight>
== <code>fs.chmod(path, mode, callback)‎</code> ==
==<code>fs.chmod(path, mode, callback)‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
الإصدار
!الإصدار
التغييرات
!التغييرات
v10.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|v10.0.0
v7.6.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
v7.0.0
|v7.6.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v0.1.30
|-
أضيف هذا التابع.
|v7.0.0
 
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|-
* <code>mode‎</code>:‏ [[JavaScript/Number|<integer>]]
|v0.1.30
* <code>callback‎</code>:‏ [[JavaScript/Function|<Function>]]
|أضيف هذا التابع.
** <code>err‎</code>:‏ [[JavaScript/Error|<Error>]]
|}
يغيِّر هذا التابع بشكل غير متزامن أذونات ملفٍ. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. انظر أيضًا الدالة <code>chmod(2)‎</code>.
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
=== نمط الملف (File Mode) ===
*<code>mode‎</code>:‏ [[JavaScript/Number|<integer>]]
الوسيط <code>mode‎</code> المستعمل في التابعين <code>fs.chmod()‎</code> و <code>fs.chmodSync()‎</code> كلاهما هو قناع بتِّي عددي (numeric bitmask) يُنشَأ باستعمال المعامل OR المنطقي للثوابت التالية:
*<code>callback‎</code>:‏ [[JavaScript/Function|<Function>]]
 
**<code>err‎</code>:‏ [[JavaScript/Error|<Error>]]
الثابت
يغيِّر هذا التابع بشكل غير متزامن أذونات ملفٍ. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. انظر أيضًا الدالة <code>[http://man7.org/linux/man-pages/man2/chmod.2.html chmod(2)‎]</code>.
القيمة الثمانية
===نمط الملف (File Mode)===
الإذن
الوسيط <code>mode‎</code> المستعمل في التابعين <code>fs.chmod()‎</code> و <code>[[Node.js/fs#fs.chmodSync.28path.2C mode.29.E2.80.8E|fs.chmodSync()‎]]</code> كلاهما هو قناع بتِّي عددي (numeric bitmask) يُنشَأ باستعمال المعامل OR المنطقي للثوابت التالية:
fs.constants.S_IRUSR
{| class="wikitable"
0o400
!الثابت
يمكن للمالك قراءة الملف.
!القيمة الثمانية
fs.constants.S_IWUSR
!الإذن
0o200
|-
يمكن للمالك الكتابة على الملف.
|<code>fs.constants.S_IRUSR</code>
fs.constants.S_IXUSR
|<code>0o400</code>
0o100
|يمكن للمالك قراءة الملف.
يمكن للمالك تنفيذ الملف أو البحث ضمنه.
|-
fs.constants.S_IRGRP
|<code>fs.constants.S_IWUSR</code>
0o40
|<code>0o200</code>
يمكن للمجموعة المالكة قراءة الملف.
|يمكن للمالك الكتابة على الملف.
fs.constants.S_IWGRP
|-
0o20
|<code>fs.constants.S_IXUSR</code>
يمكن للمجموعة المالكة الكتابة على الملف.
|<code>0o100</code>
fs.constants.S_IXGRP
|يمكن للمالك تنفيذ الملف أو البحث ضمنه.
0o10
|-
يمكن للمجموعة المالكة تنفيذ الملف أو البحث ضمنه.
|<code>fs.constants.S_IRGRP</code>
fs.constants.S_IROTH
|<code>0o40</code>
0o4
|يمكن للمجموعة المالكة قراءة الملف.
يمكن للآخرين قراءة الملف.
|-
fs.constants.S_IWOTH
|<code>fs.constants.S_IWGRP</code>
0o2
|<code>0o20</code>
يمكن للآخرين الكتابة على الملف.
|يمكن للمجموعة المالكة الكتابة على الملف.
fs.constants.S_IXOTH
|-
0o1
|<code>fs.constants.S_IXGRP</code>
يمكن للآخرين تنفيذ الملف أو البحث ضمنه.
|<code>0o10</code>
أسهل طريقة لضبط الوسيط <code>mode‎</code> هي استعمال سلسلة من ثلاثة أعداد ثمانية (مثل العدد <code>765‎</code>). يحدِّد العدد في أقصى اليسار (هو 7 في مثالنا) أذونات مالك الملف، والعدد الذي في المنتصف (هو 6 في مثالنا) أذونات المجموعة المالكة، والعدد في أقصى اليمين (هو 5 في مثالنا) أذونات الأشخاص الآخرين.
|يمكن للمجموعة المالكة تنفيذ الملف أو البحث ضمنه.
 
|-
العدد الثماني
|<code>fs.constants.S_IROTH</code>
الأذونات
|<code>0o4</code>
7
|يمكن للآخرين قراءة الملف.
القراءة والكتابة والتنفيذ.
|-
6  
|<code>fs.constants.S_IWOTH</code>
القراءة والكتابة.
|<code>0o2</code>
5
|يمكن للآخرين الكتابة على الملف.
القراءة والتنفيذ.
|-
4
|<code>fs.constants.S_IXOTH</code>
القراءة فقط.
|<code>0o1</code>
3
|يمكن للآخرين تنفيذ الملف أو البحث ضمنه.
الكتابة والتنفيذ.
|}أسهل طريقة لضبط الوسيط <code>mode‎</code> هي استعمال سلسلة من ثلاثة أعداد ثمانية (مثل العدد <code>765‎</code>). يحدِّد العدد في أقصى اليسار (هو 7 في مثالنا) أذونات مالك الملف، والعدد الذي في المنتصف (هو 6 في مثالنا) أذونات المجموعة المالكة، والعدد في أقصى اليمين (هو 5 في مثالنا) أذونات الأشخاص الآخرين.
2
{| class="wikitable"
الكتابة فقط.
!العدد الثماني
1
!الأذونات
التنفيذ.
|-
0
|<code>7</code>
لا يوجد أذونات.
|القراءة والكتابة والتنفيذ.
 
|-
على سبيل المثال، القيمة الثمانية <code>0o765‎</code> تعني:
|<code>6</code>
* يُسمَح للمالك بقراءة وكتابة وتنفيذ الملف.
|القراءة والكتابة.
* يُسمَح للمجموعة المالكة بالقراءة والكتابة على الملف.
|-
* يُسمَح للآخرين بقراءة وتنفيذ الملف.
|<code>5</code>
عند استعمال الأعداد المجرَّدة في المكان الذي يُتوقَّع فيه استعمال أنماط الملف، يؤدي استعمال أية قيمة أكبر من <code>0o777‎</code> إلى حدوث سلوكيات غير مدعومة تختلف باختلاف المنصة المستعملة؛ وبالتالي، ثوابتٌ مثل <code>S_ISVTX‎</code>، و <code>S_ISGID‎</code>، و <code>S_ISUID‎</code> غيرُ موجودةٍ في <code>fs.constants‎</code>.
|القراءة والتنفيذ.
تحذير: في ويندوز، يمكن تغيير أذونات الكتابة فقط، ولا تؤخذ الاختلافات بين أذونات المجموعة المالكة، أو المالك، أو الآخرين بالحسبان.
|-
== <code>fs.chmodSync(path, mode)‎</code> ==
|<code>4</code>
سجل التغييرات
|القراءة فقط.
 
|-
الإصدار
|<code>3</code>
التغييرات
|الكتابة والتنفيذ.
v7.6.0
|-
يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|<code>2</code>
v0.1.30
|الكتابة فقط.
أضيف هذا التابع.
|-
|<code>1</code>
|التنفيذ.
|-
|<code>0</code>
|لا يوجد أذونات.
|}على سبيل المثال، القيمة الثمانية <code>0o765‎</code> تعني:
*يُسمَح للمالك بقراءة وكتابة وتنفيذ الملف.
*يُسمَح للمجموعة المالكة بالقراءة والكتابة على الملف.
*يُسمَح للآخرين بقراءة وتنفيذ الملف.
عند استعمال الأعداد المجرَّدة في المكان الذي يُتوقَّع فيه استعمال أنماط الملف، يؤدي استعمال أية قيمة أكبر من <code>0o777‎</code> إلى حدوث سلوكيات غير مدعومة تختلف باختلاف المنصة المستعملة؛ وبالتالي، ثوابتٌ مثل <code>S_ISVTX‎</code>، و <code>S_ISGID‎</code>، و <code>S_ISUID‎</code> غيرُ موجودةٍ في <code>fs.constants‎</code>. تحذير: في ويندوز، يمكن تغيير أذونات الكتابة فقط، ولا تؤخذ الاختلافات بين أذونات المجموعة المالكة، أو المالك، أو الآخرين بالحسبان.
==<code>fs.chmodSync(path, mode)‎</code>==
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v0.1.30
|أضيف هذا التابع.
|}
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>mode‎</code>:‏ [[JavaScript/Number|<integer>]]
يغيِّر هذا التابع بشكل متزامن أذونات ملفٍ. لمزيد من التفاصيل، ارجع إلى توثيق الإصدار غير المتزامن من هذه الواجهة البرمجية وهي <code>[[Node.js/fs#fs.chmod.28path.2C mode.2C callback.29.E2.80.8E|fs.chmod()‎]]</code>.


* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
انظر أيضًا الدالة <code>[http://man7.org/linux/man-pages/man2/chmod.2.html chmod(2)‎]</code>.
* <code>mode‎</code>:‏ [[JavaScript/Number|<integer>]]
==<code>fs.chown(path, uid, gid, callback)‎</code>==
يغيِّر هذا التابع بشكل متزامن أذونات ملفٍ. لمزيد من التفاصيل، ارجع إلى توثيق الإصدار غير المتزامن من هذه الواجهة البرمجية وهي <code>fs.chmod()‎</code>.
{| class="wikitable mw-collapsible"
انظر أيضًا الدالة <code>chmod(2)‎</code>.
|+سجل التغييرات
== <code>fs.chown(path, uid, gid, callback)‎</code> ==
!الإصدار
سجل التغييرات
!التغييرات
 
|-
الإصدار
|v10.0.0
التغييرات
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v10.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|v7.6.0
v7.6.0
|يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
v7.0.0
|v7.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.30
|-
أضيف هذا التابع.
|v0.1.30
 
|أضيف هذا التابع.
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|}
* <code>uid</code>:‏ [[JavaScript/Number|<integer>]]
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>gid</code>:‏ [[JavaScript/Number|<integer>]]
*<code>uid</code>:‏ [[JavaScript/Number|<integer>]]
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
*<code>gid</code>:‏ [[JavaScript/Number|<integer>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
يغيِّر هذا التابع بشكل غير متزامن المالك والمجموعة المالكة لملف. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
يغيِّر هذا التابع بشكل غير متزامن المالك والمجموعة المالكة لملف. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
انظر أيضًا: <code>chown(2)‎</code>.
== <code>fs.chownSync(path, uid, gid)‎</code> ==
سجل التغييرات
الإصدار
التغييرات
v7.6.0
يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v0.1.30
أضيف هذا التابع.


* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
انظر أيضًا: <code>[http://man7.org/linux/man-pages/man2/chown.2.html chown(2)‎]</code>.
* <code>uid</code>:‏ [[JavaScript/Number|<integer>]]
==<code>fs.chownSync(path, uid, gid)‎</code>==
* <code>gid</code>:‏ [[JavaScript/Number|<integer>]]
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>‎. ما زال هذا الدعم قيد التجريب.
|-
|v0.1.30
|أضيف هذا التابع.
|}
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>uid</code>:‏ [[JavaScript/Number|<integer>]]
*<code>gid</code>:‏ [[JavaScript/Number|<integer>]]
يغيِّر هذا التابع بشكل متزامن المالك والمجموعة المالكة لملف، أو يعيد القيمة undefined. هذا التابع هو النسخة المتزامنة من التابع <code>fs.chown()‎</code>.
يغيِّر هذا التابع بشكل متزامن المالك والمجموعة المالكة لملف، أو يعيد القيمة undefined. هذا التابع هو النسخة المتزامنة من التابع <code>fs.chown()‎</code>.
انظر أيضًا: <code>chown(2)‎</code>.
== <code>‎fs.close(fd, callback)</code> ==
سجل التغييرات
الإصدار
التغييرات
v10.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v7.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.30
أضيف هذا التابع.


* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
انظر أيضًا: <code>[http://man7.org/linux/man-pages/man2/chown.2.html chown(2)]‎</code>.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
==<code>‎fs.close(fd, callback)</code>==
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
{| class="wikitable mw-collapsible"
يغلق هذا التابع بشكل غير متزامن ملفًا مفتوحًا، إذ يُنفِّذ دالة النظام <code>close(2)‎</code>. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
|+سجل التغييرات
== <code>fs.closeSync(fd)‎</code> ==
!الإصدار
!التغييرات
|-
|v10.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
|v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
|v0.1.30
|أضيف هذا التابع.
|}
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
يغلق هذا التابع بشكل غير متزامن ملفًا مفتوحًا، إذ يُنفِّذ دالة النظام <code>[http://man7.org/linux/man-pages/man2/close.2.html close(2)‎]</code>. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
==<code>fs.closeSync(fd)‎</code>==
أضيف في الإصدار: v0.1.21.
أضيف في الإصدار: v0.1.21.
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
يغلق هذا التابع بشكل متزامن ملفًا مفتوحًا، إذ يُنفِّذ دالة النظام <code>close(2)‎</code>. يعيد القيمة <code>undefined‎</code>.
يغلق هذا التابع بشكل متزامن ملفًا مفتوحًا، إذ يُنفِّذ دالة النظام <code>[http://man7.org/linux/man-pages/man2/close.2.html close(2)‎]</code>. يعيد القيمة <code>undefined‎</code>.
== <code>fs.constants‎</code> ==
==<code>fs.constants‎</code>==
* [[JavaScript/Object|<Object>]]
*[[JavaScript/Object|<Object>]]
يعيد هذا التابع كائنًا يحوي الثوابت الأكثر استعمالًا في عمليات نظام الملفات. الثوابت المعرَّفة حاليًا تجدها مع شرحٍ لها في القسم «الثوابت المستعملة في الوحدة <code>fs‎</code>» في الأسفل.
يعيد هذا التابع كائنًا يحوي الثوابت الأكثر استعمالًا في عمليات نظام الملفات. الثوابت المعرَّفة حاليًا تجدها مع شرحٍ لها في القسم «الثوابت المستعملة في الوحدة <code>fs‎</code>» في الأسفل.
== <code>fs.copyFile(src, dest[, flags], callback)‎</code> ==
==<code>fs.copyFile(src, dest[, flags], callback)‎</code>==
أضيف في الإصدار:v8.5.0.
أضيف في الإصدار:v8.5.0.
* <code>src</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]] اسم الملف المراد نسخه.
*<code>src</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]] اسم الملف المراد نسخه.
* <code>dest</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]] اسم الملف الوجهة الذي سيُنسَخ في الملف المحدَّد في المعامل src.
*<code>dest</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]] اسم الملف الوجهة الذي سيُنسَخ في الملف المحدَّد في المعامل src.
* <code>flags</code>:‏ [[JavaScript/Number|<number>]] مُعدِّلات (modifiers) عملية النسخ. القيمة الافتراضية هي: 0.
*<code>flags</code>:‏ [[JavaScript/Number|<number>]] مُعدِّلات (modifiers) عملية النسخ. القيمة الافتراضية هي: 0.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
ينسخ هذا التابع ملفًا من <code>src‎</code> إلى <code>dest‎</code> بشكل غير متزامن. تُستبدَل قيمة الوسيط <code>dest‎</code> إن كانت موجودة مسبقًا بشكل افتراضي. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. لا تعطِ Node.js أية ضمانات متعلقة بتجزئة عملية النسخ. إن حصل أي خطأ بعد فتح الملف الوجهة للكتابة، ستحاول Node.js إزالته.
ينسخ هذا التابع ملفًا من <code>src‎</code> إلى <code>dest‎</code> بشكل غير متزامن. تُستبدَل قيمة الوسيط <code>dest‎</code> إن كانت موجودة مسبقًا بشكل افتراضي. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. لا تعطِ Node.js أية ضمانات متعلقة بتجزئة عملية النسخ. إن حصل أي خطأ بعد فتح الملف الوجهة للكتابة، ستحاول Node.js إزالته.
الوسيط <code>flags‎</code> اختياري وهو عددٌ صحيحٌ يحدِّد سلوك عملية النسخ. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل <code>fs.constants.COPYFILE_FICLONE | fs.constants.COPYFILE_EXCL</code>). الثوابت المدعومة هي:
الوسيط <code>flags‎</code> اختياري وهو عددٌ صحيحٌ يحدِّد سلوك عملية النسخ. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل <code>fs.constants.COPYFILE_FICLONE | fs.constants.COPYFILE_EXCL</code>). الثوابت المدعومة هي:
* <code>fs.constants.COPYFILE_EXCL‎</code>: ستفشل عملية النسخ إن كان الملف <code>dest‎</code> موجودًا من قبل.
*<code>fs.constants.COPYFILE_EXCL‎</code>: ستفشل عملية النسخ إن كان الملف <code>dest‎</code> موجودًا من قبل.
<code>fs.constants.COPYFILE_FICLONE‎</code>: ستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستُستخدَم آلية النسخ التراجعي (fallback copy).
<code>fs.constants.COPYFILE_FICLONE‎</code>: ستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستُستخدَم آلية النسخ التراجعي (fallback copy).
* <code>fs.constants.COPYFILE_FICLONE‎</code>: ستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستفشل عملية النسخ.
*<code>fs.constants.COPYFILE_FICLONE‎</code>: ستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستفشل عملية النسخ.
<syntaxhighlight lang="javascript">const fs = require('fs');
<syntaxhighlight lang="javascript">const fs = require('fs');


سطر 800: سطر 831:
fs.copyFileSync('source.txt', 'destination.txt');
fs.copyFileSync('source.txt', 'destination.txt');
console.log('source.txt was copied to destination.txt');
console.log('source.txt was copied to destination.txt');
</syntaxhighlight>
</syntaxhighlight>إن كان الوسيط الأخير عددًا، فهو يحدِّد الوسيط <code>flags‎</code>:<syntaxhighlight lang="javascript">const fs = require('fs');
إن كان الوسيط الأخير عددًا، فهو يحدِّد الوسيط <code>flags‎</code>:
<syntaxhighlight lang="javascript">const fs = require('fs');
const { COPYFILE_EXCL } = fs.constants;
const { COPYFILE_EXCL } = fs.constants;


سطر 808: سطر 837:
fs.copyFileSync('source.txt', 'destination.txt', COPYFILE_EXCL);
fs.copyFileSync('source.txt', 'destination.txt', COPYFILE_EXCL);
</syntaxhighlight>
</syntaxhighlight>
== <code>fs.createReadStream(path[, options])‎</code> ==
==<code>fs.createReadStream(path[, options])‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v7.0.0
|لن يُغيِّر المعامل <code>options</code> المُمرَّر مطلقًا.
|-
|v2.3.0
|يمكن أن يكون المعامل <code>options</code> المُمرَّر سلسلة نصية الآن.
|-
|v0.1.31
|أضيف هذا التابع.
|}
*<code>path</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>options‎</code>:‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
**<code>flags</code>:‏ [[JavaScript/String|<string>]]‏ ارجع إلى القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'r'</code>.
**<code>encoding</code>:‏ [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>null</code>.
**<code>fd</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>null‎</code>.
**<code>mode</code>:‏ [[JavaScript/Number|<integer>]]‏ القيمة الافتراضية هي: <code>0o666</code>.
**<code>autoClose</code>:‏ [[JavaScript/Boolean|<boolean>]] القيمة الافتراضية هي: <code>true</code>.
**<code>start</code>:‏ [[JavaScript/Number|<integer>]]
**<code>end</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>Infinity</code>.
**<code>highWaterMark</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>64 * 1024</code>.


الإصدار
*القيم المعادة: <fs.ReadStream> انظر القسم «المجاري القابلة للقراءة» في توثيق الوحدة <code>stream‎</code>.
التغييرات
المجرى المُعاد باستعمال هذا التابع يملك القيمة 64 كيلو بت الافتراضية للوسيط <code>highWaterMark‎</code> خلافًا للمجرى القابل للقراءة الذي يملك القيمة 16 كيلو بت فقط لذلك الوسيط.
v7.6.0
يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
v7.0.0
لن يُغيِّر المعامل <code>options‎</code> المُمرَّر مطلقًا.
v2.3.0
يمكن أن يكون المعامل <code>options‎</code> المُمرَّر سلسلة نصية الآن.
v0.1.31
أضيف هذا التابع.


* <code>path</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>options‎</code>:‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
** <code>flags</code>:‏ [[JavaScript/String|<string>]]‏ ارجع إلى القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'r'‎</code>.
** <code>encoding</code>:‏ [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>null</code>.
** <code>fd</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>null‎</code>.
** <code>mode</code>:‏ [[JavaScript/Number|<integer>]]‏ القيمة الافتراضية هي: <code>0o666</code>.
** <code>autoClose</code>:‏ [[JavaScript/Boolean|<boolean>]] القيمة الافتراضية هي: <code>true</code>.
** <code>start</code>:‏ [[JavaScript/Number|<integer>]]
** <code>end</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>Infinity</code>.
** <code>highWaterMark</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>64 * 1024</code>.
القيم المعادة: <fs.ReadStream> انظر القسم «المجاري القابلة للقراءة» في توثيق الوحدة <code>stream‎</code>.
المجرى المُعاد باستعمال هذا التابع يملك القيمة 64 كيلو بت الافتراضية للوسيط <code>highWaterMark‎</code> خلافًا للمجرى القابل للقراءة الذي يملك القيمة 16 كيلو بت فقط لذلك الوسيط.
يمكن أن يتضمن الوسيط <code>options‎</code> الخيارين <code>start‎</code> و <code>end‎</code> لقراءة مجالٍ محدَّدٍ من البايتات من الملف بدلًا من قراءته كاملًا. يدخل الوسيطين <code>start‎</code> و <code>end‎</code> كلاهما ضمن المجال، ويبدأ الوسيط من القيمة 0. إن حُدِّد الوسيط <code>fd‎</code> ولم يُعطَ الوسيط <code>start‎</code> أو كانت قيمته <code>undefined‎</code>، فسيقرأ التابع <code>fs.createReadStream()‎</code> بالتسلسل بدءًا من موقع المؤشر الحالي للملف. يمكن أن يكون الوسيط <code>encoding‎</code> أيًّا من الترميزات المقبولة في الصنف <code>Buffer‎</code>.
يمكن أن يتضمن الوسيط <code>options‎</code> الخيارين <code>start‎</code> و <code>end‎</code> لقراءة مجالٍ محدَّدٍ من البايتات من الملف بدلًا من قراءته كاملًا. يدخل الوسيطين <code>start‎</code> و <code>end‎</code> كلاهما ضمن المجال، ويبدأ الوسيط من القيمة 0. إن حُدِّد الوسيط <code>fd‎</code> ولم يُعطَ الوسيط <code>start‎</code> أو كانت قيمته <code>undefined‎</code>، فسيقرأ التابع <code>fs.createReadStream()‎</code> بالتسلسل بدءًا من موقع المؤشر الحالي للملف. يمكن أن يكون الوسيط <code>encoding‎</code> أيًّا من الترميزات المقبولة في الصنف <code>Buffer‎</code>.
إن أعطي الوسيط <code>fd‎</code>، فسيتجاهل <code>ReadStream‎</code> الوسيط <code>path‎</code> ويستخدم واصف الملف المعطى. هذا يعني أنَّه لن يُطلَق الحدث <code>'open' </code>. يجب أن يكون واصف الملف <code>fd‎</code> المعطى محجوزًا. يجب أن يمرَّر واصف الملف غير المحجوز إلى <code>net.Socket‎</code>.
 
إن كان واصف الملف <code>fd‎</code> يشير إلى جهاز محرفي (character device) يدعم وضع القراءة المحجوزة (blocking reads) فقط (مثل لوحة المفاتيح أو بطاقة الصوت)، فلن تنتهي عملية القراءة حتى تتوافر البيانات. هذا يساعد بمنع العملية من الخروج والمجرى من الإغلاق بشكل طبيعي.
إن أعطي الوسيط <code>fd‎</code>، فسيتجاهل <code>ReadStream‎</code> الوسيط <code>path‎</code> ويستخدم واصف الملف المعطى. هذا يعني أنَّه لن يُطلَق الحدث <code>'open'</code>. يجب أن يكون واصف الملف <code>fd‎</code> المعطى محجوزًا. يجب أن يمرَّر واصف الملف غير المحجوز إلى <code>net.Socket‎</code>.
<syntaxhighlight lang="javascript">const fs = require('fs');
 
إن كان واصف الملف <code>fd‎</code> يشير إلى جهاز محرفي (character device) يدعم وضع القراءة المحجوزة (blocking reads) فقط (مثل لوحة المفاتيح أو بطاقة الصوت)، فلن تنتهي عملية القراءة حتى تتوافر البيانات. هذا يساعد بمنع العملية من الخروج والمجرى من الإغلاق بشكل طبيعي.<syntaxhighlight lang="javascript">const fs = require('fs');
// إنشاء مجرًى من بعض الأجهزة المحرفية
// إنشاء مجرًى من بعض الأجهزة المحرفية
const stream = fs.createReadStream('/dev/input/event0');
const stream = fs.createReadStream('/dev/input/event0');
سطر 850: سطر 886:
   stream.read(0);
   stream.read(0);
}, 100);
}, 100);
</syntaxhighlight>
</syntaxhighlight>إن كانت قيمة الوسيط <code>autoClose‎</code> هي <code>false‎</code>، فلن يُغلَق واصف الملف حينئذٍ حتى لو حصل خطأ. في هذه الحالة، تقع مسؤولية إغلاق الملف على عاتق التطبيق والتأكد من عدم حصول تسريب في واصفات الملفات. إن ضُبِط الوسيط <code>autoClose‎</code> إلى القيمة <code>true‎</code> (السلوك الافتراضي)، فسيُغلَق واصف الملف تلقائيًّا متى ما أطلق الحدث <code>'error'</code> أو الحدث <code>'end'</code>.
إن كانت قيمة الوسيط <code>autoClose‎</code> هي <code>false‎</code>، فلن يُغلَق واصف الملف حينئذٍ حتى لو حصل خطأ. في هذه الحالة، تقع مسؤولية إغلاق الملف على عاتق التطبيق والتأكد من عدم حصول تسريب في واصفات الملفات. إن ضُبِط الوسيط <code>autoClose‎</code> إلى القيمة <code>true‎</code> (السلوك الافتراضي)، فسيُغلَق واصف الملف تلقائيًّا متى ما أطلق الحدث <code>'error'</code> أو الحدث <code>'end'</code>.
 
يضبط الوسيط <code>mode‎</code> نمط الملف (الأذونات والبتات اللاصقة [sticky bits]) في حال أنشئ الملف آنذاك فقط.
يضبط الوسيط <code>mode‎</code> نمط الملف (الأذونات والبتات اللاصقة [sticky bits]) في حال أنشئ الملف آنذاك فقط.
إليك مثالٌ يوضِّح كيفية قراءة آخر 10 بايتات من ملفٍ بحجم 100 بايت:
<syntaxhighlight lang="javascript">fs.createReadStream('sample.txt', { start: 90, end: 99 });
</syntaxhighlight>
إن كان <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز.
== <code>fs.createWriteStream(path[, options])‎</code> ==
سجل التغييرات


الإصدار
إليك مثالٌ يوضِّح كيفية قراءة آخر 10 بايتات من ملفٍ بحجم 100 بايت:<syntaxhighlight lang="javascript">fs.createReadStream('sample.txt', { start: 90, end: 99 });
التغييرات
</syntaxhighlight>إن كان <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز.
v7.6.0
==<code>fs.createWriteStream(path[, options])‎</code>==
يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
{| class="wikitable mw-collapsible"
v7.0.0
|+سجل التغييرات
لن يُغيِّر المعامل <code>options‎</code> المُمرَّر مطلقًا.
!الإصدار
v2.3.0
!التغييرات
يمكن أن يكون المعامل <code>options‎</code> المُمرَّر سلسلة نصية الآن.
|-
v0.1.31
|v7.6.0
أضيف هذا التابع.
|يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
|-
|v7.0.0
|لن يُغيِّر المعامل <code>options</code> المُمرَّر مطلقًا.
|-
|v2.3.0
|يمكن أن يكون المعامل <code>options</code> المُمرَّر سلسلة نصية الآن.
|-
|v0.1.31
|أضيف هذا التابع.
|}
*<code>path</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>options‎</code>:‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
**<code>flags</code>:‏ [[JavaScript/String|<string>]]‏ ارجع إلى القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'w'‎</code>.
**<code>encoding</code>:‏ [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>'utf8'</code>.
**<code>fd</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>null‎</code>.
**<code>mode</code>:‏ [[JavaScript/Number|<integer>]]‏ القيمة الافتراضية هي: <code>0o666</code>.
**<code>autoClose</code>:‏ [[JavaScript/Boolean|<boolean>]] القيمة الافتراضية هي: <code>true</code>.
**<code>start</code>:‏ [[JavaScript/Number|<integer>]]
 
*القيم المعادة: <fs.ReadStream> انظر القسم «المجاري القابلة للكتابة» في توثيق الوحدة <code>stream‎</code>.
يمكن أن يتضمن الوسيط <code>options‎</code> الخيار<code>start‎</code> للسماح بكتابة البيانات في موضع محدِّد بعد تخطي عددٍ محدِّدٍ من البايتات الأولى. قد يتطلَّب تعديل الملف بدلًا من استبداله أن تكون قيمة الخيار <code>flags‎</code> هي <code>'r+'</code> بدلًا من القيمة <code>'w'</code> الافتراضية. يمكن أن يكون الوسيط <code>encoding‎</code> أيًّا من الترميزات المقبولة في الصنف <code>[[Node.js/buffer|Buffer‎]]</code>.


* <code>path</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
إن كانت قيمة الوسيط <code>autoClose‎</code> هي <code>false‎</code>، فلن يُغلَق واصف الملف حينئذٍ حتى لو حصل خطأ. في هذه الحالة، تقع مسؤولية إغلاق الملف على عاتق التطبيق والتأكد من عدم حصول تسريبٍ في واصفات الملفات. أمَّا إن ضُبِط الوسيط <code>autoClose‎</code> إلى القيمة <code>true‎</code> (السلوك الافتراضي)، فسيُغلَق واصف الملف تلقائيًّا متى ما أطلق الحدث <code>'error'</code> أو الحدث <code>'end'</code>.
* <code>options‎</code>:‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
** <code>flags</code>:‏ [[JavaScript/String|<string>]]‏ ارجع إلى القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'w'‎</code>.
** <code>encoding</code>:‏ [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>'utf8</code>.
** <code>fd</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>null‎</code>.
** <code>mode</code>:‏ [[JavaScript/Number|<integer>]]‏ القيمة الافتراضية هي: <code>0o666</code>.
** <code>autoClose</code>:‏ [[JavaScript/Boolean|<boolean>]] القيمة الافتراضية هي: <code>true</code>.
** <code>start</code>:‏ [[JavaScript/Number|<integer>]]
القيم المعادة: <fs.ReadStream> انظر القسم «المجاري القابلة للكتابة» في توثيق الوحدة <code>stream‎</code>.
يمكن أن يتضمن الوسيط <code>options‎</code> الخيار<code>start‎</code> للسماح بكتابة البيانات في موضع محدِّد بعد تخطي عددٍ محدِّدٍ من البايتات الأولى. قد يتطلَّب تعديل الملف بدلًا من استبداله أن تكون قيمة الخيار <code>flags‎</code> هي <code>'r+'‎</code> بدلًا من القيمة <code>'w'‎</code> الافتراضية. يمكن أن يكون الوسيط <code>encoding‎</code> أيًّا من الترميزات المقبولة في الصنف <code>Buffer‎</code>.
إن كانت قيمة الوسيط <code>autoClose‎</code> هي <code>false‎</code>، فلن يُغلَق واصف الملف حينئذٍ حتى لو حصل خطأ. في هذه الحالة، تقع مسؤولية إغلاق الملف على عاتق التطبيق والتأكد من عدم حصول تسريبٍ في واصفات الملفات. أمَّا إن ضُبِط الوسيط <code>autoClose‎</code> إلى القيمة <code>true‎</code> (السلوك الافتراضي)، فسيُغلَق واصف الملف تلقائيًّا متى ما أطلق الحدث <code>'error'</code> أو الحدث <code>'end'‎</code>.
إن أعطي الوسيط <code>fd‎</code>، فسيتجاهل <code>WriteStream</code> الوسيط <code>path‎</code> ويستخدم واصف الملف المعطى. هذا يعني أنه لن يُطلَق الحدث <code>'open' ‎</code>. يجب أن يكون واصف الملف <code>fd‎</code> المعطى محجوزًا. يجب أن يمرَّر واصف الملف غير المحجوز إلى <code>net.Socket‎</code>.
إن كان <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز.
== <code>fs.exists(path, callback)‎</code> ==
الاستقرار: 0 - مهمل. استعمل التابع <code>fs.stat()‎</code> أو <code>fs.access()</code> بدلًا منه.
سجل التغييرات


الإصدار
إن أعطي الوسيط <code>fd‎</code>، فسيتجاهل <code>WriteStream</code> الوسيط <code>path‎</code> ويستخدم واصف الملف المعطى. هذا يعني أنه لن يُطلَق الحدث <code>'open'</code>. يجب أن يكون واصف الملف <code>fd‎</code> المعطى محجوزًا. يجب أن يمرَّر واصف الملف غير المحجوز إلى <code>net.Socket‎</code>.
التغييرات
v7.6.0
يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v1.0.0
أهمل هذا التابع.
v0.0.2
أضيف هذا التابع.


* <code>path</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
إن كان <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]] القيمة الافتراضية هي: <code>true</code>.
==<code>fs.exists(path, callback)‎</code>==
** <code>exists</code>:‏ [[JavaScript/Boolean|<boolean>]]
الاستقرار: 0 - مهمل. استعمل التابع <code>[[Node.js/fs#.E2.80.8Efs.stat.28path.5B.2C options.5D.2C callback.29|fs.stat()‎]]</code> أو <code>[[Node.js/fs#fs.access.28path.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.access()]][[Node.js/fs#.E2.80.8Efs.stat.28path.5B.2C options.5D.2C callback.29|‎]]</code> بدلًا منه.
يتحقق هذا التابع إن كان المسار المعطى موجودًا أم لا عبر التحقق من نظام الملفات ثم يستدعي الوسيط <code>callback‎</code> إمَّا مع القيمة <code>true‎</code> أو القيمة <code>false‎</code>.
{| class="wikitable mw-collapsible"
<syntaxhighlight lang="javascript">fs.exists('/etc/passwd', (exists) => {
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>‎. ما زال هذا الدعم قيد التجريب.
|-
|v1.0.0
|أهمل هذا التابع.
|-
|v0.0.2
|أضيف هذا التابع.
|}
*<code>path</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]] القيمة الافتراضية هي: <code>true</code>.
**<code>exists</code>:‏ [[JavaScript/Boolean|<boolean>]]
يتحقق هذا التابع إن كان المسار المعطى موجودًا أم لا عبر التحقق من نظام الملفات ثم يستدعي الوسيط <code>callback‎</code> إمَّا مع القيمة <code>true‎</code> أو القيمة <code>false‎</code>.<syntaxhighlight lang="javascript">fs.exists('/etc/passwd', (exists) => {
   console.log(exists ? 'it\'s there' : 'no passwd!');
   console.log(exists ? 'it\'s there' : 'no passwd!');
});
});
</syntaxhighlight>
</syntaxhighlight>ملاحظة: معاملات رد النداء هذا غير متناسقة مع معاملات ردود نداء Node.js الأخرى. الحالة السائدة هي أن يكون المعامل الأول لرد النداء في Node.js هو المعامل <code>err‎</code> متبوعًا بمعاملات أخرى اختيارية. رد النداء في التابع <code>fs.exists()‎</code> يملك معامل منطقي وحيد فقط. هذا هو أحد الأسباب التي يوصى من أجلها استعمال التابع <code>[[Node.js/fs#fs.access.28path.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.access()]][[Node.js/fs#.E2.80.8Efs.stat.28path.5B.2C options.5D.2C callback.29|]]</code> عوضًا عن التابع <code>fs.exists()‎</code>. لا يُنصَح باستعمال التابع <code>fs.exists()‎</code> للتحقق من وجود ملفٍ قبل استدعاء <code>[[Node.js/fs#fs.open.28path.2C flags.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.open()‎]]</code>، أو <code>[[Node.js/fs#.E2.80.8Efs.readFile.28path.5B.2C options.5D.2C callback.29|fs.readFile()‎]]</code>، أو <code>[[Node.js/fs#fs.writeFile.28file.2C data.5B.2C options.5D.2C callback.29.E2.80.8E|fs.writeFile()‎]]</code>. يؤدي فعل ذلك إلى خلق «حالة سباق» (race condition) لأنه ربما قد تُغيِّر عمليات أخرى حالة الملف بين الاستدعائين. بدلًا من ذلك، يجب على شيفرة المستخدم أن تفتح وتقرأ وتكتب في الملف مباشرةً وأن تعالج أي خطأ يُطلَق إن لم يكن موجودًا.
ملاحظة: معاملات رد النداء هذا غير متناسقة مع معاملات ردود نداء Node.js الأخرى. الحالة السائدة هي أن يكون المعامل الأول لرد النداء في Node.js هو المعامل <code>err‎</code> متبوعًا بمعاملات أخرى اختيارية. رد النداء في التابع <code>fs.exists()‎</code> يملك معامل منطقي وحيد فقط. هذا هو أحد الأسباب التي يوصى من أجلها استعمال التابع <code>fs.access()‎</code> عوضًا عن التابع <code>fs.exists()‎</code>.
 
لا يُنصَح باستعمال التابع <code>fs.exists()‎</code> للتحقق من وجود ملفٍ قبل استدعاء <code>fs.open()‎</code>، أو <code>fs.readFile()‎</code>، أو <code>fs.writeFile()‎</code>. يؤدي فعل ذلك إلى خلق «حالة سباق» (race condition) لأنه ربما قد تُغيِّر عمليات أخرى حالة الملف بين الاستدعائين. بدلًا من ذلك، يجب على شيفرة المستخدم أن تفتح وتقرأ وتكتب في الملف مباشرةً وأن تعالج أي خطأ يُطلَق إن لم يكن موجودًا.
يوضح المثال التالي كيفية الكتابة على ملف بطريقة '''لا يوصى بها''':<syntaxhighlight lang="javascript">fs.exists('myfile', (exists) => {
يوضح المثال التالي كيفية الكتابة على ملف بطريقة لا يوصى بها:
<syntaxhighlight lang="javascript">fs.exists('myfile', (exists) => {
   if (exists) {
   if (exists) {
     console.error('myfile already exists');
     console.error('myfile already exists');
سطر 918: سطر 961:
   }
   }
});
});
</syntaxhighlight>
</syntaxhighlight>أمَّا المثال التالي، فيوضح كيفية الكتابة على ملف بالطريقة '''المُثلَى''':<syntaxhighlight lang="javascript">fs.open('myfile', 'wx', (err, fd) => {
أمَّا المثال التالي، فيوضح كيفية الكتابة على ملف بالطريقة المُثلَى:
<syntaxhighlight lang="javascript">fs.open('myfile', 'wx', (err, fd) => {
   if (err) {
   if (err) {
     if (err.code === 'EEXIST') {
     if (err.code === 'EEXIST') {
سطر 932: سطر 973:
   writeMyData(fd);
   writeMyData(fd);
});
});
</syntaxhighlight>
</syntaxhighlight>يوضح المثال التالي كيفية القراءة من ملف بطريقة '''لا يوصى بها''':<syntaxhighlight lang="javascript">fs.exists('myfile', (exists) => {
يوضح المثال التالي كيفية القراءة من ملف بطريقة لا يوصى بها:
<syntaxhighlight lang="javascript">fs.exists('myfile', (exists) => {
   if (exists) {
   if (exists) {
     fs.open('myfile', 'r', (err, fd) => {
     fs.open('myfile', 'r', (err, fd) => {
سطر 944: سطر 983:
   }
   }
});
});
</syntaxhighlight>
</syntaxhighlight>أمَّا المثال التالي، فيوضِّح كيفية القراءة من ملف بالطريقة '''المُثلَى''':<syntaxhighlight lang="javascript">fs.open('myfile', 'r', (err, fd) => {
أمَّا المثال التالي، فيوضِّح كيفية القراءة من ملف بالطريقة المُثلَى:
<syntaxhighlight lang="javascript">fs.open('myfile', 'r', (err, fd) => {
   if (err) {
   if (err) {
     if (err.code === 'ENOENT') {
     if (err.code === 'ENOENT') {
سطر 958: سطر 995:
   readMyData(fd);
   readMyData(fd);
});
});
</syntaxhighlight>
</syntaxhighlight>تتحقق الأمثلة التي «لا يوصى باتباعها» من وجود الملف ثم تستعمله؛ أمَّا الأمثلة التي «يوصى باتباعها»، فهي أفضل لأنَّها تستعمل الملف مباشرةً وتعالج الخطأ إن حصل.
تتحقق الأمثلة التي «لا يوصى باتباعها» من وجود الملف ثم تستعمله؛ أمَّا الأمثلة التي «يوصى باتباعها»، فهي أفضل لأنَّها تستعمل الملف مباشرةً وتعالج الخطأ إن حصل.
 
عمومًا، يُتحقَّق من وجود الملف في حال استُعمِل الملف بشكل غير مباشر مثل عندما يكون وجود ملف إشارةً من عملية أخرى.
عمومًا، يُتحقَّق من وجود الملف في حال استُعمِل الملف بشكل غير مباشر مثل عندما يكون وجود ملف إشارةً من عملية أخرى.
== <code>fs.existsSync(path)‎</code> ==
==<code>fs.existsSync(path)‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v0.1.21
|أضيف هذا التابع.
|}
*<code>path</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد التابع القيمة <code>true‎</code> إن كان المسار موجودًا، أو القيمة <code>false‎</code> خلا ذلك. لتفاصيل أوسع، انظر توثيق النسخة الغير متزامنة من هذا التابع وهي التابع <code>[[Node.js/fs#fs.exists.28path.2C callback.29.E2.80.8E|fs.exists()‎]]</code>.


الإصدار
انتبه إلى أنَّ التابع <code>[[Node.js/fs#fs.exists.28path.2C callback.29.E2.80.8E|fs.exists()‎]]</code> مهمل، ولكن التابع <code>fs.existsSync()‎</code> غير مهمل. المعامل <code>callback‎</code> المُمرَّر إلى <code>[[Node.js/fs#fs.exists.28path.2C callback.29.E2.80.8E|fs.exists()]]</code> يقبل معاملات تعد غير متناسقة مع معاملات ردود النداء الأخرى في Node.js.
التغييرات
v7.6.0
يمكن الآن أن يكون الوسيط <code>path‎</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v0.1.21
أضيف هذا التابع.


* <code>path</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* القيم المعادة: [[JavaScript/Boolean|<boolean>]]
يعيد التابع القيمة <code>true‎</code> إن كان المسار موجودًا، أو القيمة <code>false‎</code> خلا ذلك.
لتفاصيل أوسع، انظر توثيق النسخة الغير متزامنة من هذا التابع وهي التابع <code>fs.exists()‎</code>.
انتبه إلى أنَّ التابع <code>fs.exists()‎</code> مهمل، ولكن التابع <code>fs.existsSync()‎</code> غير مهمل. المعامل <code>callback‎</code> المُمرَّر إلى <code>fs.exists()‎</code> يقبل معاملات تعد غير متناسقة مع معاملات ردود النداء الأخرى في Node.js.
لا يستعمل التابع <code>fs.existsSync()‎</code> رد نداءٍ.
لا يستعمل التابع <code>fs.existsSync()‎</code> رد نداءٍ.
== <code>fs.fchmod(fd, mode, callback)‎</code> ==
==<code>fs.fchmod(fd, mode, callback)‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
الإصدار
!الإصدار
التغييرات
!التغييرات
v10.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|v10.0.0
v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
v0.4.7
|v7.0.0
أضيف هذا التابع.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
 
|-
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
|v0.4.7
* <code>mode</code>:‏ [[JavaScript/Number|<integer>]]
|أضيف هذا التابع.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
|}
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
يغيِّر هذا التابع نمط الملف (file mode) عبر استدعاء النظام <code>fchmod(2)‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
*<code>mode</code>:‏ [[JavaScript/Number|<integer>]]
== <code>fs.fchmodSync(fd, mode)‎</code> ==
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
يغيِّر هذا التابع نمط الملف (file mode) عبر استدعاء النظام <code>[http://man7.org/linux/man-pages/man2/fchmod.2.html fchmod(2)‎]</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
==<code>fs.fchmodSync(fd, mode)‎</code>==
أضيف  في الإصدار: v0.4.7.
أضيف  في الإصدار: v0.4.7.
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
* <code>mode</code>:‏ [[JavaScript/Number|<integer>]]
*<code>mode</code>:‏ [[JavaScript/Number|<integer>]]
يغيِّر هذا التابع نمط الملف (file mode) عبر استدعاء النظام <code>fchmod(2)‎</code> بشكل متزامن.
يغيِّر هذا التابع نمط الملف (file mode) عبر استدعاء النظام <code>[http://man7.org/linux/man-pages/man2/fchmod.2.html fchmod(2)‎]</code> بشكل متزامن.
== <code>fs.fchown(fd, uid, gid, callback)‎</code> ==
==<code>fs.fchown(fd, uid, gid, callback)‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
الإصدار
!الإصدار
التغييرات
!التغييرات
v10.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|v10.0.0
v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
v0.4.7
|v7.0.0
أضيف هذا التابع.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
 
|-
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
|v0.4.7
* <code>uid</code>:‏ [[JavaScript/Number|<integer>]]
|أضيف هذا التابع.
* <code>gid</code>:‏ [[JavaScript/Number|<integer>]]
|}
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
*<code>uid</code>:‏ [[JavaScript/Number|<integer>]]
يغيِّر هذا التابع المستخدم المالك للملف عبر استدعاء النظام <code>fchown(2)‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
*<code>gid</code>:‏ [[JavaScript/Number|<integer>]]
== <code>fs.fchownSync(fd, uid, gid)‎</code> ==
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
يغيِّر هذا التابع المستخدم المالك للملف عبر استدعاء النظام <code>[http://man7.org/linux/man-pages/man2/fchown.2.html fchown(2)‎]</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
==<code>fs.fchownSync(fd, uid, gid)‎</code>==
أضيف في الإصدار: v0.4.7.
أضيف في الإصدار: v0.4.7.
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
* <code>uid</code>:‏ [[JavaScript/Number|<integer>]]
*<code>uid</code>:‏ [[JavaScript/Number|<integer>]]
* <code>gid</code>:‏ [[JavaScript/Number|<integer>]]
*<code>gid</code>:‏ [[JavaScript/Number|<integer>]]
يغيِّر هذا التابع المستخدم المالك للملف عبر استدعاء النظام <code>fchown(2)‎</code> بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
يغيِّر هذا التابع المستخدم المالك للملف عبر استدعاء النظام [http://man7.org/linux/man-pages/man2/fchown.2.html <code>fchown(2)‎</code>] بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
== <code>fs.fdatasync(fd, callback)‎</code> ==
==<code>fs.fdatasync(fd, callback)‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
الإصدار
!الإصدار
التغييرات
!التغييرات
v10.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|v10.0.0
v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
v0.1.96
|v7.0.0
أضيف هذا التابع.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
 
|-
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
|v0.1.96
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
|أضيف هذا التابع.
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
|}
ينفِّذ هذا التابع استدعاء النظام <code>fdatasync(2)‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
== <code>fs.fdatasyncSync(fd)‎</code> ==
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
ينفِّذ هذا التابع استدعاء النظام <code>[http://man7.org/linux/man-pages/man2/fdatasync.2.html fdatasync(2)‎]</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
==<code>fs.fdatasyncSync(fd)‎</code>==
أضيف في الإصدار: v0.1.96.
أضيف في الإصدار: v0.1.96.
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
ينفِّذ هذا التابع استدعاء النظام <code>fdatasync(2)‎</code> بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
ينفِّذ هذا التابع استدعاء النظام <code>[http://man7.org/linux/man-pages/man2/fdatasync.2.html fdatasync(2)]‎</code> بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
== <code>fs.fstat(fd[, options], callback)‎</code> ==
==<code>fs.fstat(fd[, options], callback)‎</code>==
سجل التغييرات
{| class="wikitable"
 
!الإصدار
الإصدار
!التغييرات
التغييرات
|-
v10.5.0
|v10.5.0
يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
|يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع <code>bigint</code>.
v10.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|v10.0.0
v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
v0.1.95
|v7.0.0
أضيف هذا التابع.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
 
|-
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
|v0.1.95
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]
|أضيف هذا التابع.
** <code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
|}
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]
* <code>stats</code>:‏ <fs.Stats>
**<code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
يجلب هذا التابع معلومات حول الملف عبر استدعاء دالة النظام <code>fstat(2)‎</code> بشكل غير متزامن. يمرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code>، و <code>stats‎</code>، إذ <code>stats‎</code> هو الكائن <code>fs.Stats‎</code>. التابع <code>fstat()‎</code> ممائلٌ تمامًا للتابع <code>stat()‎</code> باستثناء أنَّ الملف المراد جلب معلومات عنه يحدَّد عبر واصف الملف <code>fd</code>.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
== <code>fs.fstatSync(fd[, options])‎</code> ==
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
سجل التغييرات
*<code>stats</code>:‏ <fs.Stats>
 
يجلب هذا التابع معلومات حول الملف عبر استدعاء دالة النظام <code>[http://man7.org/linux/man-pages/man2/fstat.2.html fstat(2)‎]</code> بشكل غير متزامن. يمرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code>، و <code>stats‎</code>، إذ <code>stats‎</code> هو الكائن <code>fs.Stats‎</code>. التابع <code>fstat()‎</code> ممائلٌ تمامًا للتابع <code>[[Node.js/fs#.E2.80.8Efs.stat.28path.5B.2C options.5D.2C callback.29|stat()‎]]</code> باستثناء أنَّ الملف المراد جلب معلومات عنه يحدَّد عبر واصف الملف <code>fd</code>.
الإصدار
==<code>fs.fstatSync(fd[, options])‎</code>==
التغييرات
{| class="wikitable mw-collapsible"
v10.5.0
|+سجل التغييرات
يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
!الإصدار
v0.1.95
!التغييرات
أضيف هذا التابع.
|-
 
|v10.5.0
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
|يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع <code>bigint</code>.
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]
|-
** <code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
|v0.1.95
* القيم المعادة: <fs.Stats>
|أضيف هذا التابع.
يجلب هذا التابع معلومات حول الملف عبر استدعاء دالة النظام <code>fstat(2)‎</code> بشكل متزامن.
|}
== <code>fs.fsync(fd, callback)‎</code> ==
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
سجل التغييرات
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]
 
**<code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
الإصدار
*القيم المعادة: <fs.Stats>
التغييرات
يجلب هذا التابع معلومات حول الملف عبر استدعاء دالة النظام <code>[http://man7.org/linux/man-pages/man2/fstat.2.html fstat(2)]‎</code> بشكل متزامن.
v10.0.0
==<code>fs.fsync(fd, callback)‎</code>==
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
{| class="wikitable mw-collapsible"
v7.0.0
|+سجل التغييرات
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
!الإصدار
v0.1.95
!التغييرات
أضيف هذا التابع.
|-
 
|v10.0.0
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
|-
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
|v7.0.0
ينفِّذ هذا التابع دالة النظام <code>fsync(2)‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
== <code>fs.fsyncSync(fd)‎</code> ==
|-
|v0.1.95
|أضيف هذا التابع.
|}
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
ينفِّذ هذا التابع دالة النظام <code>[http://man7.org/linux/man-pages/man2/fsync.2.html fsync(2)‎]</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
==<code>fs.fsyncSync(fd)‎</code>==
أضيف في الإصدار: 0.1.96.
أضيف في الإصدار: 0.1.96.
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
ينفِّذ هذا التابع دالة النظام <code>fsync(2)‎</code> بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
ينفِّذ هذا التابع دالة النظام <code>[http://man7.org/linux/man-pages/man2/fsync.2.html fsync(2)]‎</code> بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
== <code>fs.ftruncate(fd[, len], callback)‎</code> ==
==<code>fs.ftruncate(fd[, len], callback)‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v10.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
|v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
|v0.8.6
|أضيف هذا التابع.
|}
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
*<code>len</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0‎</code>.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
يقطع هذا التابع الملف ذا الواصف <code>fd‎</code> إلى الحجم <code>len‎</code> عبر استدعاء دالة النظام <code>[http://man7.org/linux/man-pages/man2/ftruncate.2.html ftruncate(2)]‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.


الإصدار
إن كان حجم الملف أكبر من الحجم <code>len‎</code> المعطى بالبايت، فستُعاد البايتات <code>len‎</code> الأولى فقط من الملف. على سبيل المثال، يعيد البرنامج التالي البايتات الأربعة الأولى فقط من الملف:<syntaxhighlight lang="javascript">console.log(fs.readFileSync('temp.txt', 'utf8'));
التغييرات
v10.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v7.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.8.6
أضيف هذا التابع.
 
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
* <code>len</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0‎</code>.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
يقطع هذا التابع الملف ذا الواصف <code>fd‎</code> إلى الحجم <code>len‎</code> عبر استدعاء دالة النظام <code>ftruncate(2)‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
إن كان حجم الملف أكبر من الحجم <code>len‎</code> المعطى بالبايت، فستُعاد البايتات <code>len‎</code> الأولى فقط من الملف.
على سبيل المثال، يعيد البرنامج التالي البايتات الأربعة الأولى فقط من الملف:
<syntaxhighlight lang="javascript">console.log(fs.readFileSync('temp.txt', 'utf8'));
// Node.js :سيُطبَع
// Node.js :سيُطبَع


سطر 1٬144: سطر 1٬203:
// <Buffer 4e 6f 64 65 2e 6a 73 00 00 00> :سيُطبَع
// <Buffer 4e 6f 64 65 2e 6a 73 00 00 00> :سيُطبَع
// (UTF8 في الترميز 'Node.js\0\0\0' أي تكون)
// (UTF8 في الترميز 'Node.js\0\0\0' أي تكون)
</syntaxhighlight>
</syntaxhighlight>البايتات الأخيرة المضافة هي بايتات عدمية (<code>'\0'‎</code>) لتعويض البايتات الإضافية الناتجة عن عملية الإفراط في الاقتطاع (over-truncation).
البايتات الأخيرة المضافة هي بايتات عدمية (<code>'\0'‎</code>) لتعويض البايتات الإضافية الناتجة عن عملية الإفراط في الاقتطاع (over-truncation).
==<code>fs.ftruncateSync(fd[, len])‎</code>==
== <code>fs.ftruncateSync(fd[, len])‎</code> ==
أضيف في الإصدار: v0.8.6.
أضيف في الإصدار: v0.8.6.
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
* <code>len</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0‎</code>.
*<code>len</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0‎</code>.
يقطع هذا التابع الملف ذا الواصف <code>fd‎</code> إلى الحجم <code>len‎</code> عبر استدعاء دالة النظام <code>ftruncate(2)‎</code> بشكل متزامن. لمزيد من التفاصيل، اطلع رجاءً على توثيق الإصدار غير المتزامن من هذا التابع الذي هو <code>fs.ftruncate()‎</code>.
يقطع هذا التابع الملف ذا الواصف <code>fd‎</code> إلى الحجم <code>len‎</code> عبر استدعاء دالة النظام <code>[http://man7.org/linux/man-pages/man2/ftruncate.2.html ftruncate(2)‎]</code> بشكل متزامن. لمزيد من التفاصيل، اطلع رجاءً على توثيق الإصدار غير المتزامن من هذا التابع الذي هو <code>fs.ftruncate()‎</code>.
== <code>fs.futimes(fd, atime, mtime, callback)‎</code> ==
==<code>fs.futimes(fd, atime, mtime, callback)‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v10.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
|v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
|v4.1.0
|يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة <code>NaN</code>، والقيمة <code>Infinity‎</code> لتكون محدِّدات للوقت (time specifiers).
|-
|v0.4.2
|أضيف هذا التابع.
|}
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
*<code>atime</code>:‏ [[JavaScript/Number|<number>]]‏ | [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
*<code>mtime</code>:‏ [[JavaScript/Number|<number>]] ‏| [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بواصف الملف المعطى. اطلع على التابع <code>[https://nodejs.org/dist/latest-v10.x/docs/api/fs.html#fs_fs_utimes_path_atime_mtime_callback fs.utimes()]‎</code>.


الإصدار
التغييرات
v10.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v7.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v4.1.0
يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة <code>NaN‎</code>، والقيمة <code>Infinity‎</code> لتكون محدِّدات للوقت (time specifiers).
v0.4.2
أضيف هذا التابع.
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
* <code>atime</code>:‏ [[JavaScript/Number|<number>]]‏ | [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
* <code>mtime</code>:‏ [[JavaScript/Number|<number>]] ‏| [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بواصف الملف المعطى. اطلع على التابع <code>fs.utimes(2)‎</code>.
لا يعمل هذا التابع على إصدارات AIX التي قبل 7.1، إذ ستعيد إن استعملت في تلك الإصدارات الخطأ <code>UV_ENOSYS‎</code>.
لا يعمل هذا التابع على إصدارات AIX التي قبل 7.1، إذ ستعيد إن استعملت في تلك الإصدارات الخطأ <code>UV_ENOSYS‎</code>.
== <code>fs.futimesSync(fd, atime, mtime)‎</code> ==
==<code>fs.futimesSync(fd, atime, mtime)‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
الإصدار
!الإصدار
التغييرات
!التغييرات
v4.1.0
|-
يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة <code>NaN‎</code>، والقيمة <code>Infinity‎</code> لتكون محدِّدات للوقت (time specifiers).
|v4.1.0
v0.4.2
|يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة <code>NaN‎</code>، والقيمة <code>Infinity‎</code> لتكون محدِّدات للوقت (time specifiers).
أضيف هذا التابع.
|-
 
|v0.4.2
* <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
|أضيف هذا التابع.
* <code>atime</code>:‏ [[JavaScript/Number|<number>]]‏ | [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
|}
* <code>mtime</code>:‏ [[JavaScript/Number|<number>]] ‏| [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
*<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
يمثِّل هذا التابع الإصدار المتزامن من التابع <code>fs.futimes()‎</code>. يعيد هذا التابع القيمة <code>undefined‎</code>.
*<code>atime</code>:‏ [[JavaScript/Number|<number>]]‏ | [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
== <code>fs.lchmod(path, mode, callback)‎</code> ==
*<code>mtime</code>:‏ [[JavaScript/Number|<number>]] ‏| [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
سجل التغييرات
يمثِّل هذا التابع الإصدار المتزامن من التابع <code>[https://nodejs.org/dist/latest-v10.x/docs/api/fs.html#fs_fs_utimes_path_atime_mtime_callback fs.futimes()]‎</code>. يعيد هذا التابع القيمة <code>undefined‎</code>.
 
==<code>fs.lchmod(path, mode, callback)‎</code>==
الإصدار
{| class="wikitable"
التغييرات
!الإصدار
v10.0.0
!التغييرات
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
v7.0.0
|v10.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v0.4.7
|-
أضيف هذا التابع.
|v7.0.0
 
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|-
* <code>mode</code>:‏ [[JavaScript/Number|<integer>]]
|v0.4.7
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
|أضيف هذا التابع.
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
|}
يغيِّر هذا التابع أذونات ملفٍ عبر استدعاء <code>lchmod(2)‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
هذا التابع متاحٌ في أنظمة macOS فقط.
*<code>mode</code>:‏ [[JavaScript/Number|<integer>]]
== <code>‎fs.lchmodSync(path, mode)</code> ==
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
يغيِّر هذا التابع أذونات ملفٍ عبر استدعاء <code>[https://www.freebsd.org/cgi/man.cgi?query=lchmod&sektion=2 lchmod(2)‎]</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. هذا التابع متاحٌ في أنظمة macOS فقط.
==<code>‎fs.lchmodSync(path, mode)</code>==
أهملت بدءًا من الإصدار: v0.4.7.
أهملت بدءًا من الإصدار: v0.4.7.
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>mode</code>:‏ [[JavaScript/Number|<integer>]]
*<code>mode</code>:‏ [[JavaScript/Number|<integer>]]
يغيِّر هذا التابع أذونات ملفٍ عبر استدعاء <code>lchmod(2)‎</code> بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
يغيِّر هذا التابع أذونات ملفٍ عبر استدعاء <code>[https://www.freebsd.org/cgi/man.cgi?query=lchmod&sektion=2 lchmod(2)]‎</code> بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
== <code>fs.lchown(path, uid, gid, callback)‎</code> ==
==<code>fs.lchown(path, uid, gid, callback)‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v10.6.0
|لم تعد هذه الواجهة البرمجية مهملةً بعد الآن.
|-
|v10.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
|v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|}
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>uid</code>:‏ [[JavaScript/Number|<integer>]]
*<code>gid</code>:‏ [[JavaScript/Number|<integer>]]
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
يغيِّر هذا التابع المالك والمجموعة المالكة لملف عبر استدعاء <code>[http://man7.org/linux/man-pages/man2/lchown.2.html lchown(2)‎]</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
==<code>fs.chownSync(path, uid, gid)‎</code>==
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v10.6.0
|لم تعد هذه الواجهة البرمجية مهملةً بعد الآن.
|}
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>uid</code>:‏ [[JavaScript/Number|<integer>]]
*<code>gid</code>:‏ [[JavaScript/Number|<integer>]]
يغيِّر هذا التابع المالك والمجموعة المالكة لملف عبر استدعاء [http://man7.org/linux/man-pages/man2/lchown.2.html <code>lchown(2)‎</code>] بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
==<code>fs.link(existingPath, newPath, callback)‎</code>==
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v10.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>existingPath</code> والوسيط <code>newPath</code> كائنات من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
|v0.1.31
|أضيف هذا التابع.
|}
*<code>existingPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>newPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
ينشئ هذا التابع وصلةً جديدةً (وصلةً صلبةً) للملف الحالي عبر استدعاء <code>[http://man7.org/linux/man-pages/man2/link.2.html link(2)‎]</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
==<code>fs.linkSync(existingPath, newPath)‎</code>==
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>existingPath</code> والوسيط <code>newPath</code> كائنات من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v0.1.31
|أضيف هذا التابع.
|}
*<code>existingPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>newPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
ينشئ هذا التابع وصلةً جديدةً (وصلةً صلبةً) للملف الحالي عبر استدعاء <code>[http://man7.org/linux/man-pages/man2/link.2.html link(2)‎]‎</code> بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
==<code>fs.lstat(path[, options], callback)‎</code>==
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v10.5.0
|يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع <code>bigint</code>.
|-
|v10.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
|v0.1.30
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]
**<code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
*<code>stats</code>:‏ <fs.Stats>
يجلب هذا التابع معلومات حول الملف ذي المسار <code>path‎</code> عبر استدعاء دالة النظام <code>[http://man7.org/linux/man-pages/man2/lstat.2.html lstat(2)]‎</code> بشكل غير متزامن. يمرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code>، و <code>stats‎</code>، إذ <code>stats‎</code> هو الكائن <code>fs.Stats‎</code>. التابع <code>lstat()‎</code> ممائلٌ تمامًا للتابع <code>stat()‎</code> باستثناء أنَّه إذا كان المسار <code>path‎</code> وصلةً رمزيةً، فستُعاد حينئذٍ معلومات عن الوصلة نفسها وليس عن الملف الذي تشير إليه هذه الوصلة.
==<code>fs.lstatSync(path[, options])‎</code>==
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v10.5.0
|يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v0.1.30
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]
**<code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
*القيم المعادة: <fs.Stats>
يجلب هذا التابع معلومات حول الملف ذي المسار <code>path‎</code> عبر استدعاء دالة النظام <code>[http://man7.org/linux/man-pages/man2/lstat.2.html lstat(2)]‎</code> بشكل متزامن.
==<code>fs.mkdir(path[, mode], callback)‎</code>==
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v10.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
|v0.1.8
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>mode</code>:‏ [[JavaScript/Number|<integer>]] غير مدعوم على ويندوز. القيمة الافتراضية هي: <code>0o777‎</code>.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
ينشئ هذا التابع مجلدًا جديدًا بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. انظر أيضًا الدالة <code>[http://man7.org/linux/man-pages/man2/mkdir.2.html mkdir(2)]‎</code>.
==<code>fs.mkdirSync(path[, mode])‎</code>==
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>‎. ما زال هذا الدعم قيد التجريب.
|-
|v0.1.21
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>mode</code>:‏ [[JavaScript/Number|<integer>]] غير مدعوم على ويندوز. القيمة الافتراضية هي: <code>0o777‎</code>.
ينشئ هذا التابع مجلدًا جديدًا بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>. هذا التابع هو الإصدار المتزامن من التابع <code>[[Node.js/fs#fs.mkdir.28path.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.mkdir()‎]]</code>.


الإصدار
انظر أيضًا الدالة <code>[http://man7.org/linux/man-pages/man2/mkdir.2.html mkdir(2)]‎</code>.
التغييرات
==<code>fs.mkdtemp(prefix[, options], callback)‎</code>==
v10.6.0
{| class="wikitable mw-collapsible"
لم تعد هذه الواجهة البرمجية مهملةً بعد الآن.
|+سجل التغييرات
v10.0.0
!الإصدار
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
!التغييرات
v7.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|v10.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
|v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
|v6.2.1
|أصبح المعامل <code>callback‎</code> الآن اختياريًّا.
|-
|v5.10.0
|أضيف هذا التابع.
|}
*<code>prefix</code>:‏‏ [[JavaScript/String|<string>]]‏
*<code>options</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Object|<Object>]]
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ القيمة الافتراضية هي: <code>'utf8'</code>.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
**<code>folder</code>:‏ [[JavaScript/String|<string>]]
ينشئ هذا التابع مجلدًا فريدًا مؤقتًا بشكل غير متزامن.


* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
يولِّد هذا التابع ستة محارف عشوائية لتضاف في نهاية البادئة <code>prefix‎</code> المطلوبة لإنشاء مجلدٍ فريدٍ مؤقتٍ.
* <code>uid</code>:‏ [[JavaScript/Number|<integer>]]
* <code>gid</code>:‏ [[JavaScript/Number|<integer>]]
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
يغيِّر هذا التابع المالك والمجموعة المالكة لملف عبر استدعاء <code>lchown(2)‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
انظر أيضًا: <code>chown(2)‎</code>.
== <code>fs.chownSync(path, uid, gid)‎</code> ==
سجل التغييرات


الإصدار
يمرَّر مسار المجلد المُنشَأ كسلسلة نصية إلى المعامل الثاني لدالة رد النداء.
التغييرات
v10.6.0
لم تعد هذه الواجهة البرمجية مهملةً بعد الآن.
 
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>uid</code>:‏ [[JavaScript/Number|<integer>]]
* <code>gid</code>:‏ [[JavaScript/Number|<integer>]]
يغيِّر هذا التابع المالك والمجموعة المالكة لملف عبر استدعاء <code>lchown(2)‎</code> بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
== <code>fs.link(existingPath, newPath, callback)‎</code> ==
سجل التغييرات
 
الإصدار
التغييرات
v10.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v7.6.0
يمكن الآن أن يكون الوسيط <code>existingPath</code> والوسيط <code>newPath</code> كائنات من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v7.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.31
أضيف هذا التابع.
 
* <code>existingPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>newPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
ينشئ هذا التابع وصلةً جديدةً (وصلةً صلبةً) للملف الحالي عبر استدعاء <code>link(2)‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
== <code>fs.linkSync(existingPath, newPath)‎</code> ==
سجل التغييرات
 
الإصدار
التغييرات
v7.6.0
يمكن الآن أن يكون الوسيط <code>existingPath</code> والوسيط <code>newPath</code> كائنات من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v0.1.31
أضيف هذا التابع.
 
* <code>existingPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>newPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
ينشئ هذا التابع وصلةً جديدةً (وصلةً صلبةً) للملف الحالي عبر استدعاء <code>link(2)‎</code> بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
== <code>fs.lstat(path[, options], callback)‎</code> ==
سجل التغييرات
 
الإصدار
التغييرات
v10.5.0
يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v10.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v7.6.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v7.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.30
أضيف هذا التابع.
 
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]
** <code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
* <code>stats</code>:‏ <fs.Stats>
يجلب هذا التابع معلومات حول الملف ذي المسار <code>path‎</code> عبر استدعاء دالة النظام <code>lstat(2)‎</code> بشكل غير متزامن. يمرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code>، و <code>stats‎</code>، إذ <code>stats‎</code> هو الكائن <code>fs.Stats‎</code>. التابع <code>lstat()‎</code> ممائلٌ تمامًا للتابع <code>stat()‎</code> باستثناء أنَّه إذا كان المسار <code>path‎</code> وصلةً رمزيةً، فستُعاد حينئذٍ معلومات عن الوصلة نفسها وليس عن الملف الذي تشير إليه هذه الوصلة.
== <code>fs.lstatSync(path[, options])‎</code> ==
سجل التغييرات
 
الإصدار
التغييرات
v10.5.0
يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v7.6.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v0.1.30
أضيف هذا التابع.
 
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]
** <code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
* القيم المعادة: <fs.Stats>
يجلب هذا التابع معلومات حول الملف ذي المسار <code>path‎</code> عبر استدعاء دالة النظام <code>lstat(2)‎</code> بشكل متزامن.
== <code>fs.mkdir(path[, mode], callback)‎</code> ==
سجل التغييرات
 
الإصدار
التغييرات
v10.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v7.6.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v7.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.8
أضيف هذا التابع.
 
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>mode</code>:‏ [[JavaScript/Number|<integer>]] غير مدعوم على ويندوز. القيمة الافتراضية هي: <code>0o777‎</code>.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
ينشئ هذا التابع مجلدًا جديدًا بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
انظر أيضًا الدالة <code>mkdir(2)‎</code>.
== <code>fs.mkdirSync(path[, mode])‎</code> ==
سجل التغييرات
 
الإصدار
التغييرات
v7.6.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v0.1.21
أضيف هذا التابع.
 
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>mode</code>:‏ [[JavaScript/Number|<integer>]] غير مدعوم على ويندوز. القيمة الافتراضية هي: <code>0o777‎</code>.
ينشئ هذا التابع مجلدًا جديدًا بشكل متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>. هذا التابع هو الإصدار المتزامن من التابع <code>fs.mkdir()‎</code>.
انظر أيضًا الدالة <code>mkdir(2)‎</code>.
== <code>fs.mkdtemp(prefix[, options], callback)‎</code> ==
سجل التغييرات
 
الإصدار
التغييرات
v10.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v7.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v6.2.1
أصبح المعامل <code>callback‎</code> الآن اختياريًّا.
v5.10.0
أضيف هذا التابع.


* <code>prefix</code>:‏‏ [[JavaScript/String|<string>]]‏
يمكن أن يكون الوسيط <code>options‎</code> سلسلةً نصيةً تحدِّد الترميز، أو كائنًا مع الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله.<syntaxhighlight lang="javascript">fs.mkdtemp(path.join(os.tmpdir(), 'foo-'), (err, folder) => {
* <code>options</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ القيمة الافتراضية هي: <code>'utf8'‎</code>.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
** <code>folder</code>:‏ [[JavaScript/String|<string>]]
ينشئ هذا التابع مجلدًا فريدًا مؤقتًا بشكل غير متزامن.
يولِّد هذا التابع ستة محارف عشوائية لتضاف في نهاية البادئة <code>prefix‎</code> المطلوبة لإنشاء مجلدٍ فريدٍ مؤقتٍ.
يمرَّر مسار المجلد المُنشَأ كسلسلة نصية إلى المعامل الثاني لدالة رد النداء.
يمكن أن يكون الوسيط <code>options‎</code> سلسلةً نصيةً تحدِّد الترميز، أو كائنًا مع الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله.
<syntaxhighlight lang="javascript">fs.mkdtemp(path.join(os.tmpdir(), 'foo-'), (err, folder) => {
   if (err) throw err;
   if (err) throw err;
   console.log(folder);
   console.log(folder);
   // /tmp/foo-itXde2 أو C:\Users\...\AppData\Local\Temp\foo-itXde2 :سيُطبَع
   // /tmp/foo-itXde2 أو C:\Users\...\AppData\Local\Temp\foo-itXde2 :سيُطبَع
});
});
</syntaxhighlight>
</syntaxhighlight>سيضيف التابع <code>fs.mkdtemp()‎</code> المحارف الستة العشوائية المختارة مباشرةً إلى السلسلة <code>prefix‎</code> النصية. على سبيل المثال، إن كان لدينا المجلد <code>/tmp‎</code> وأردنا إنشاء مجلد مؤقت داخله، فيجب أن تنتهي البادئة <code>prefix‎</code> بالفاصلة الزائدة المستعملة عادةً في فصل المسار في المنصة المستعملة آنذاك (<code>require('path').sep‎</code>).<syntaxhighlight lang="javascript">// المجلد الأب للمجلد المؤقت الجديد
سيضيف التابع <code>fs.mkdtemp()‎</code> المحارف الستة العشوائية المختارة مباشرةً إلى السلسلة <code>prefix‎</code> النصية. على سبيل المثال، إن كان لدينا المجلد <code>/tmp‎</code> وأردنا إنشاء مجلد مؤقت داخله، فيجب أن تنتهي البادئة <code>prefix‎</code> بالفاصلة الزائدة المستعملة عادةً في فصل المسار في المنصة المستعملة آنذاك (<code>require('path').sep‎</code>).
<syntaxhighlight lang="javascript">// المجلد الأب للمجلد المؤقت الجديد
const tmpDir = os.tmpdir();
const tmpDir = os.tmpdir();


سطر 1٬399: سطر 1٬492:
});
});
</syntaxhighlight>
</syntaxhighlight>
== <code>fs.mkdtempSync(prefix[, options])‎</code> ==
==<code>fs.mkdtempSync(prefix[, options])‎</code>==
أضيف في الإصدار: v5.10.0.
أضيف في الإصدار: v5.10.0.
* <code>prefix</code>:‏‏ [[JavaScript/String|<string>]]‏
*<code>prefix</code>:‏‏ [[JavaScript/String|<string>]]‏
* <code>options</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Object|<Object>]]
*<code>options</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ القيمة الافتراضية هي: <code>'utf8'</code>.
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ القيمة الافتراضية هي: <code>'utf8'</code>.
القيم المعادة: [[JavaScript/String|<string>]]
 
*القيم المعادة: [[JavaScript/String|<string>]]
ينشئ هذا التابع مجلدًا مؤقتًا فريدًا بشكل متزامن.
ينشئ هذا التابع مجلدًا مؤقتًا فريدًا بشكل متزامن.
لمزيد من المعلومات، اطلع على توثيق الإصدار الغير متزامن من هذا التابع الذي هو <code>fs.mkdtemp()‎</code>.
يمكن أن يكون الوسيط <code>options‎</code> سلسلةً نصيةً تحدِّد الترميز، أو كائنًا مع الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله.
== <code>fs.open(path, flags[, mode], callback)‎</code> ==
سجل التغييرات


الإصدار
لمزيد من المعلومات، اطلع على توثيق الإصدار الغير متزامن من هذا التابع الذي هو <code>[[Node.js/fs#fs.mkdtemp.28prefix.5B.2C options.5D.2C callback.29.E2.80.8E|fs.mkdtemp()]]</code>.
التغييرات
v9.9.0
أصبح الوضعان <code>as‎</code> و <code>as+‎</code> مدعومين الآن.
v7.6.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v0.0.2
أضيف هذا التابع.


* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
يمكن أن يكون الوسيط <code>options‎</code> سلسلةً نصيةً تحدِّد الترميز، أو كائنًا مع الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله.
* <code>flags</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Number|<number>]] اطلع على القسم «دعم رايات نظام الملفات».
==<code>fs.open(path, flags[, mode], callback)‎</code>==
* <code>mode</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code> (قابلية القراءة والكتابة).
{| class="wikitable mw-collapsible"
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
|+سجل التغييرات
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
!الإصدار
** <code>fd</code>:‏ [[JavaScript/Number|<integer>]]
!التغييرات
يفتح هذا التابع ملفًا بشكل غير متزامن. اطلع على دليل الدالة <code>open(2)‎</code>.
|-
يضبط الوسيط <code>mode‎</code> نمط الملف (الأذونات والبتات اللاصقة [sticky bits]) في حال لم يكن الملف موجودًا وأنشئ آنذاك. في ويندوز، يمكن التلاعب بإذن الكتابة فقط. اطلع على توثيق التابع <code>fs.chmod()‎</code>.
|v9.9.0
تأخذ دالة رد النداء وسيطين هما: <code>err‎</code> و <code>fd‎</code>.
|أصبح الوضعان <nowiki><code>as‎</code></nowiki> و <nowiki><code>as+‎</code></nowiki> مدعومين الآن.
تعدُّ بعض المحارف (مثل <code>< > : " / \ | ? *‎</code>) محجوزةً في ويندوز كما أشير إلى ذلك التوثيق «تسمية الملفات، والمسارات، ومجالات الأسماء». في نظام الملفات NTFS، إن احتوى اسم الملف نقطتين رأسيتين، فستفتح Node.js مجرًى في نظام الملفات كما موضح في هذه الصفحة.
|-
التوابع التي تعتمد على التابع <code>fs.open()‎</code> تسلك السلوك نفسه أيضًا مثل التابع <code>fs.writeFile()‎</code> و التابع <code>fs.readFile()‎</code> ...إلخ.
|v7.6.0
== <code>‎fs.openSync(path, flags[, mode])</code> ==
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
سجل التغييرات
|-
|v0.0.2
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>flags</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Number|<number>]] اطلع على القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]».
*<code>mode</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code> (قابلية القراءة والكتابة).
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
**<code>fd</code>:‏ [[JavaScript/Number|<integer>]]
يفتح هذا التابع ملفًا بشكل غير متزامن. اطلع على دليل الدالة <code>[http://man7.org/linux/man-pages/man2/open.2.html open(2)‎]</code>.


الإصدار
يضبط الوسيط <code>mode‎</code> نمط الملف (الأذونات والبتات اللاصقة [sticky bits]) في حال لم يكن الملف موجودًا وأنشئ آنذاك. في ويندوز، يمكن التلاعب بإذن الكتابة فقط. اطلع على توثيق التابع <code>fs.chmod()‎</code>. تأخذ دالة رد النداء وسيطين هما: <code>err‎</code> و <code>fd‎</code>. تعدُّ بعض المحارف (مثل <code>< > : " / \ | ? *‎</code>) محجوزةً في ويندوز كما أشير إلى ذلك التوثيق «[https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file تسمية الملفات، والمسارات، ومجالات الأسماء]». في نظام الملفات NTFS، إن احتوى اسم الملف نقطتين رأسيتين، فستفتح Node.js مجرًى في نظام الملفات كما موضح في [https://docs.microsoft.com/en-us/windows/desktop/FileIO/using-streams هذه] الصفحة.
التغييرات
v7.6.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v0.1.21
أضيف هذا التابع.


* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
التوابع التي تعتمد على التابع <code>fs.open()‎</code> تسلك السلوك نفسه أيضًا مثل التابع <code>[[Node.js/fs#fs.writeFile.28file.2C data.5B.2C options.5D.2C callback.29.E2.80.8E|fs.writeFile()‎]]</code> و التابع <code>[[Node.js/fs#.E2.80.8Efs.readFile.28path.5B.2C options.5D.2C callback.29|fs.readFile()‎]]</code> ...إلخ.
* <code>flags</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Number|<number>]] اطلع على القسم «دعم رايات نظام الملفات».
==<code>‎fs.openSync(path, flags[, mode])‎</code>==
* <code>mode</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code> (قابلية القراءة والكتابة).
{| class="wikitable mw-collapsible"
* القيم المعادة: [[JavaScript/Number|<number>]]
|+سجل التغييرات
يفتح هذا التابع ملفًا بشكل متزامن. اطلع على دليل الدالة <code>open(2)‎</code>.
!الإصدار
لمزيدٍ من التفاصيل، اطلع على الإصدار غير المتزامن لهذا التابع الذي هو <code>fs.open()‎</code>.
!التغييرات
== <code>fs.read(fd, buffer, offset, length, position, callback)‎</code> ==
|-
سجل التغييرات
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v0.1.21
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>flags</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Number|<number>]] اطلع على القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]».
*<code>mode</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code> (قابلية القراءة والكتابة).
*القيم المعادة: [[JavaScript/Number|<number>]]
يفتح هذا التابع ملفًا بشكل متزامن. اطلع على دليل الدالة <code>[http://man7.org/linux/man-pages/man2/open.2.html open(2)‎]</code>.


الإصدار
لمزيدٍ من التفاصيل، اطلع على الإصدار غير المتزامن لهذا التابع الذي هو <code>[[Node.js/fs#fs.open.28path.2C flags.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.open()‎]]</code>.
التغييرات
==<code>fs.read(fd, buffer, offset, length, position, callback)‎</code>==
v10.10.0
{| class="wikitable mw-collapsible"
يمكن الآن أن يكون المعامل <code>buffer‎</code> كائنًا من النوع <code>TypedArray‎</code> أو <code>DataView‎</code>.
|+سجل التغييرات
v7.4.0
!الإصدار
يمكن الآن أن يكون المعامل <code>buffer‎</code> كائنًا من النوع <code>Uint8Array</code>.
!التغييرات
v6.0.0
|-
يمكن أن يأخذ المعامل <code>length‎</code> الآن القيمة <code>0‎</code>.
|v10.10.0
v0.0.2
|يمكن الآن أن يكون المعامل <code>buffer‎</code> كائنًا من النوع <code>TypedArray‎</code> أو <code>DataView‎</code>.
أضيف هذا التابع.
|-
|v7.4.0
|يمكن الآن أن يكون المعامل <code>buffer‎</code> كائنًا من النوع <code>Uint8Array</code>.
|-
|v6.0.0
|يمكن أن يأخذ المعامل length‎  الآن القيمة 0.
|-
|v0.0.2
|أضيف هذا التابع.
|}
*<code>fd</code>:‏‏ [[JavaScript/String|<string>]]‏
*<code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]] يمثِّل ذاكرة التخزين المؤقتة التي ستُكتَب فيها البيانات المقروءة من الملف.
*<code>offset</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في ذاكرة التخزين المؤقتة <code>buffer‎</code> (أي مقدار الإزاحة من بدياتها).
*<code>length</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد قراءتها من الملف.
*<code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية قراءة البيانات من الملف. إن كانت قيمة هذا الوسيط <code>null‎</code>، فستُقرَأ البيانات بدءًا من موضع المؤشر الحالي في الملف ثم سيُحدَّث موضع مؤشِّر الملف بعد انتهاء عملية القراءة. إن كانت قيمة هذا الوسيط عددًا صحيحًا، فسيبقى موضع مؤشِّر الملف دون تغيير.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
**<code>bytesRead</code>:‏ [[JavaScript/Number|<integer>]]
**<code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]
يقرأ هذا التابع البيانات من الملف المحدَّد في واصف الملف <code>fd‎</code> المعطى.


* <code>fd</code>:‏‏ [[JavaScript/String|<string>]]‏
* <code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]] يمثِّل ذاكرة التخزين المؤقتة التي ستُكتَب فيها البيانات المقروءة من الملف.
* <code>offset</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في ذاكرة التخزين المؤقتة <code>buffer‎</code> (أي مقدار الإزاحة من بدياتها).
* <code>length</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد قراءتها من الملف.
* <code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية قراءة البيانات من الملف. إن كانت قيمة هذا الوسيط <code>null‎</code>، فستُقرَأ البيانات بدءًا من موضع المؤشر الحالي في الملف ثم سيُحدَّث موضع مؤشِّر الملف بعد انتهاء عملية القراءة. إن كانت قيمة هذا الوسيط عددًا صحيحًا، فسيبقى موضع مؤشِّر الملف دون تغيير.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
** <code>bytesRead</code>:‏ [[JavaScript/Number|<integer>]]
** <code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]
يقرأ هذا التابع البيانات من الملف المحدَّد في واصف الملف <code>fd‎</code> المعطى.
تأخذ دالة رد النداء ثلاثة وسائط هي: <code>err‎</code> و <code>bytesRead‎</code> و <code>buffer‎</code>.
تأخذ دالة رد النداء ثلاثة وسائط هي: <code>err‎</code> و <code>bytesRead‎</code> و <code>buffer‎</code>.
إن استدعي هذا التابع مثل نظيره <code>util.promisify()‎</code>، فسيُعيد كائنًا من النوع <code>Promise‎</code> لكائن <code>Object‎</code> مع الخاصيتين <code>bytesRead</code> و <code>buffer<code>.
== <code>fs.readdir(path[, options], callback)‎</code> ==
سجل التغييرات


الإصدار
إن استدعي هذا التابع مثل نظيره <code>util.promisify()‎</code>، فسيُعيد كائنًا من النوع <code>Promise‎</code> لكائن <code>Object‎</code> مع الخاصيتين <code>bytesRead</code> و <code>buffer</code>.
التغييرات
==<code>fs.readdir(path[, options], callback)‎</code>==
v10.10.0
{| class="wikitable mw-collapsible"
أضيف الخيار <code>withFileTypes‎</code>.
|+سجل التغييرات
v10.0.0
!الإصدار
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
!التغييرات
v7.6.0
|-
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|v10.10.0
v7.0.0
|أضيف الخيار <code>withFileTypes‎</code>.
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
v6.0.0
|v10.0.0
أضيف المعامل <code>options‎</code>.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v0.1.8
|-
أضيف هذا التابع.
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
|v6.0.0
|أضيف المعامل <code>options</code>.
|-
|v0.1.8
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
**<code>encoding</code>:‏ [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>'utf8'</code>.
**<code>withFileTypes</code>:‏ [[JavaScript/Boolean|<boolean>]] القيمة الافتراضية هي: <code>false‎</code>.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
**<code>files</code>:‏ [[JavaScript/String|<string[]‎>]]‏ | [[Node.js/buffer|<Buffer[]‎>]]‏ | [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.Dirent.E2.80.8E|<fs.Dirent[]‎>]]
يقرأ هذا التابع محتوى المجلد المحدَّد في المسار عبر تنفيذ الدالة <code>[http://man7.org/linux/man-pages/man3/readdir.3.html readdir(3)]‎</code> بشكل غير متزامن. يمُرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code> و <code>files‎</code>، إذ <code>files‎</code> هو مصفوفةٌ من أسماء الملفات في المجلد باستثناء المجلد <code>'.'‎</code> والمجلد <code>'..'‎</code>.
 
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله لأسماء الملفات الممرَّرة إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'</code>، فستُمرَّر أسماء الملفات المعادة ككائنات من النوع <code>[[Node.js/buffer|Buffer‎]]</code>.


* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
إن ضُبِط الخيار <code>options.withFileTypes‎</code> إلى القيمة <code>true‎</code>، فستحوي المصفوفة <code>files‎</code> الكائنات <code>[[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.Dirent.E2.80.8E|fs.Diret‎]]</code>.
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
==<code>fs.readdirSync(path[, options])‎</code>==
** <code>encoding</code>:‏ [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>'utf8'</code>.
{| class="wikitable mw-collapsible"
** <code>withFileTypes</code>:‏ [[JavaScript/Boolean|<boolean>]] القيمة الافتراضية هي: <code>false‎</code>.
|+سجل التغييرات
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
!الإصدار
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
!التغييرات
** <code>files</code>:‏ <string[]‎>‏ | <Buffer[]‎>‏ | <fs.Dirent[]‎>
|-
يقرأ هذا التابع محتوى المجلد المحدَّد في المسار عبر تنفيذ الدالة <code>readdir(3)‎</code> بشكل غير متزامن. يمُرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code> و <code>files‎</code>، إذ <code>files‎</code> هو مصفوفةٌ من أسماء الملفات في المجلد باستثناء المجلد <code>'.'‎</code> والمجلد <code>'..'‎</code>.
|v10.10.0
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله لأسماء الملفات الممرَّرة إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'‎</code>، فستُمرَّر أسماء الملفات المعادة ككائنات من النوع <code>Buffer‎</code>.
|أضيف الخيار <code>withFileTypes‎</code>.
إن ضُبِط الخيار <code>options.withFileTypes‎</code> إلى القيمة <code>true‎</code>، فستحوي المصفوفة <code>files‎</code> الكائنات <code>fs.Diret‎</code>.
|-
== <code>fs.readdirSync(path[, options])‎</code> ==
|v7.6.0
سجل التغييرات
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>‎. ما زال هذا الدعم قيد التجريب.
|-
|v0.1.21
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
**<code>encoding</code>:‏ [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>'utf8'</code>.
**<code>withFileTypes</code>:‏ [[JavaScript/Boolean|<boolean>]] القيمة الافتراضية هي: <code>false‎</code>.
*القيم المعادة:‏ [[JavaScript/String|<string[]‎>]]‏ | [[Node.js/buffer|<Buffer[]‎>]]‏ | [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.Dirent.E2.80.8E|<fs.Dirent[]‎>]]
يقرأ هذا التابع محتوى المجلد المحدَّد في المسار عبر تنفيذ الدالة <code>[http://man7.org/linux/man-pages/man3/readdir.3.html readdir(3)‎]</code> بشكل متزامن.


الإصدار
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله لأسماء الملفات الممرَّرة إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'</code>، فستُمرَّر أسماء الملفات المعادة ككائنات من النوع <code>Buffer‎</code>.
التغييرات
v10.10.0
أضيف الخيار <code>withFileTypes‎</code>.
v7.6.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v0.1.21
أضيف هذا التابع.


* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>'utf8'‎</code>.
** <code>withFileTypes</code>:‏ [[JavaScript/Boolean|<boolean>]] القيمة الافتراضية هي: <code>false‎</code>.
* القيم المعادة:‏ <string[]‎>‏ | <Buffer[]‎>‏ | <fs.Dirent[]‎>
يقرأ هذا التابع محتوى المجلد المحدَّد في المسار عبر تنفيذ الدالة <code>readdir(3)‎</code> بشكل متزامن.
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله لأسماء الملفات الممرَّرة إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'‎</code>، فستُمرَّر أسماء الملفات المعادة ككائنات من النوع <code>Buffer‎</code>.
إن ضُبِط الخيار <code>options.withFileTypes‎</code> إلى القيمة <code>true‎</code>، فسيحوي الناتج الكائنات <code>fs.Diret‎</code>.
إن ضُبِط الخيار <code>options.withFileTypes‎</code> إلى القيمة <code>true‎</code>، فسيحوي الناتج الكائنات <code>fs.Diret‎</code>.
== <code>‎fs.readFile(path[, options], callback)</code> ==
==<code>‎fs.readFile(path[, options], callback)</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
الإصدار
|الإصدار
التغييرات
|التغييرات
v10.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|v10.0.0
v7.6.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
v7.0.0
|v7.6.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v5.1.0
|-
سيستدعى رد النداء <code>callback‎</code> مع القيمة <code>null‎</code> بوصفها قيمة للمعامل <code>error‎</code> td في حال نجاح العملية.
|v7.0.0
v5.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
يمكن أن يكون المعامل <code>path‎</code> واصف ملفٍ الآن.
|-
v0.1.29
|v5.1.0
أضيف هذا التابع.
|سيستدعى رد النداء <code>callback‎</code> مع القيمة <code>null‎</code> بوصفها قيمة للمعامل <code>error‎</code> في حال نجاح العملية.
 
|-
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<integer>]] اسمُ أو واصفُ ملفٍ.
|v5.0.0
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
|يمكن أن يكون المعامل <code>path‎</code> واصف ملفٍ الآن.
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>null</code>.
|-
** <code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على قسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'r'</code>.
|v0.1.29
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
|أضيف هذا التابع.
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
|}
** <code>data</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<integer>]] اسمُ أو واصفُ ملفٍ.
يقرأ هذا التابع كامل محتوى الملف ذي المسار <code>path‎</code> بشكل غير متزامن.
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
<syntaxhighlight lang="javascript">fs.readFile('/etc/passwd', (err, data) => {
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>null</code>.
**<code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على قسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'r'</code>.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
**<code>data</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يقرأ هذا التابع كامل محتوى الملف ذي المسار <code>path‎</code> بشكل غير متزامن.<syntaxhighlight lang="javascript">fs.readFile('/etc/passwd', (err, data) => {
   if (err) throw err;
   if (err) throw err;
   console.log(data);
   console.log(data);
});
});
</syntaxhighlight>
</syntaxhighlight>يمُرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code> أو <code>data‎</code>، إذ <code>data‎</code> هو المحتوى المقروء من الملف. إن لم يُحدَّد أي ترميز، فسيكون نوع الوسيط <code>data‎</code> هو كائنٌ من النوع <code>[[Node.js/buffer|Buffer‎]]</code>.
يمُرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code> أو <code>data‎</code>، إذ <code>data‎</code> هو المحتوى المقروء من الملف.
 
إن لم يُحدَّد أي ترميز، فسيكون نوع الوسيط <code>data‎</code> هو كائنٌ من النوع <code>Buffer‎</code>.
إن كان الوسيط <code>options‎</code> سلسلة نصية، فسيُحدِّد حينئذٍ  الترميز:<syntaxhighlight lang="javascript">fs.readFile('/etc/passwd', 'utf8', callback);
إن كان الوسيط <code>options‎</code> سلسلة نصية، فسيُحدِّد حينئذٍ  الترميز:
</syntaxhighlight>عندما يكون المسار <code>path‎</code> مجلدًا، سيختلف سلوك التابع <code>fs.readFile()‎</code> والتابع <code>fs.readFileSync()‎</code> اعتمادًا على المنصة المستعملة؛ في أنظمة التشغيل macOS، ولينكس، وويندوز، سيؤدي ذلك إلى رمي خطأ. أمَّا في FreeBSD، فسيعاد تمثيلٌ بمحتوى المجلد.<syntaxhighlight lang="javascript">// macOS, Linux, and Windows
<syntaxhighlight lang="javascript">fs.readFile('/etc/passwd', 'utf8', callback);
</syntaxhighlight>
عندما يكون المسار <code>path‎</code> مجلدًا، سيختلف سلوك التابع <code>fs.readFile()‎</code> والتابع <code>fs.readFileSync()‎</code> اعتمادًا على المنصة المستعملة؛ في أنظمة التشغيل macOS، ولينكس، وويندوز، سيؤدي ذلك إلى رمي خطأ. أمَّا في FreeBSD، فسيعاد تمثيلٌ بمحتوى المجلد.
<syntaxhighlight lang="javascript">// macOS, Linux, and Windows
fs.readFile('<directory>', (err, data) => {
fs.readFile('<directory>', (err, data) => {
   // => [Error: EISDIR: illegal operation on a directory, read <directory>]
   // => [Error: EISDIR: illegal operation on a directory, read <directory>]
سطر 1٬567: سطر 1٬689:
   // => null, [[JavaScript/Date|<Date>]]
   // => null, [[JavaScript/Date|<Date>]]
});
});
</syntaxhighlight>
</syntaxhighlight>يجب على واصف الملف المحدَّد أن يدعم عملية القراءة.
يجب على واصف الملف المحدَّد أن يدعم عملية القراءة.
 
إن حُدِّد واصف ملفٍ كمسار <code>path‎</code>، فلن يُغلَق الملف تلقائيًّا بعد انتهاء العملية.
إن حُدِّد واصف ملفٍ كمسار <code>path‎</code>، فلن يُغلَق الملف تلقائيًّا بعد انتهاء العملية.
يُخزِّن التابع <code>fs.readFile()‎</code> كامل محتوى الملف في الذاكرة مؤقتًا. لتقليل الحجم المستهلك من الذاكرة، يفضل استعمال المجرى عبر <code>fs.createReadStream()‎</code> إن كان ذلك ممكنًا.
== <code>fs.readFileSync(path[, options])‎</code> ==
سجل التغييرات


الإصدار
يُخزِّن التابع <code>fs.readFile()‎</code> كامل محتوى الملف في الذاكرة مؤقتًا. لتقليل الحجم المستهلك من الذاكرة، يفضل استعمال المجرى عبر <code>[[Node.js/fs#fs.createReadStream.28path.5B.2C options.5D.29.E2.80.8E|fs.createReadStream()‎]]</code> إن كان ذلك ممكنًا.
التغييرات
==<code>fs.readFileSync(path[, options])‎</code>==
v7.6.0
{| class="wikitable mw-collapsible"
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
|+سجل التغييرات
v5.0.0
!الإصدار
يمكن أن يكون المعامل <code>path‎</code> واصف ملفٍ الآن.
!التغييرات
v0.1.29
|-
أضيف هذا التابع.
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
|-
|v5.0.0
|يمكن أن يكون المعامل path‎ واصف ملفٍ الآن.
|-
|v0.1.29
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<integer>]] اسمُ أو واصفُ ملفٍ.
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>null</code>.
**<code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على قسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'r'</code>.
*القيم المعادة: [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يقرأ هذا التابع كامل محتوى الملف ذي المسار <code>path‎</code> بشكل متزامن ثمَّ يعيده.
 
لمزيدٍ من التفاصيل، اطلع على الإصدار غير المتزامن من هذا التابع الذي هو <code>[[Node.js/fs#.E2.80.8Efs.readFile.28path.5B.2C options.5D.2C callback.29|fs.readFile()]]‎</code>.
 
إن لم يُحدَّد أي ترميز، فسيُعاد كائنٌ من النوع <code>[[Node.js/buffer|Buffer‎]]</code>. أمَّا إن حُدِّد الخيار <code>encoding</code>، فستُعاد سلسلةٌ نصيةٌ حينئذٍ.


* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<integer>]] اسمُ أو واصفُ ملفٍ.
بشكل مشابه للتابع <code>[[Node.js/fs#.E2.80.8Efs.readFile.28path.5B.2C options.5D.2C callback.29|fs.readFile()]]</code>، عندما يكون المسار <code>path‎</code> مجلدًا، فسيختلف سلوك التابع <code>[[Node.js/fs#.E2.80.8Efs.readFile.28path.5B.2C options.5D.2C callback.29|fs.readFile()]]‎</code> والتابع <code>fs.readFileSync()‎</code> اعتمادًا على المنصة المستعملة؛ في أنظمة التشغيل macOS، ولينكس، وويندوز، سيؤدي ذلك إلى رمي خطأ. أما في FreeBSD، فسيعاد تمثيلٌ بمحتوى المجلد.<syntaxhighlight lang="javascript">// macOS, Linux, and Windows
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>null</code>.
** <code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على قسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'r'</code>.
* القيم المعادة: [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يقرأ هذا التابع كامل محتوى الملف ذي المسار <code>path‎</code> بشكل متزامن ثمَّ يعيده.
لمزيدٍ من التفاصيل، اطلع على الإصدار غير المتزامن من هذا التابع الذي هو <code>fs.readFile()‎</code>.
إن لم يُحدَّد أي ترميز، فسيُعاد كائنٌ من النوع <code>Buffer‎</code>. أمَّا إن حُدِّد الخيار <code>encoding</code>، فستُعاد سلسلةٌ نصيةٌ حينئذٍ.
بشكل مشابه للتابع <code>fs.readFile()‎</code>، عندما يكون المسار <code>path‎</code> مجلدًا، فسيختلف سلوك التابع <code>fs.readFile()‎</code> والتابع <code>fs.readFileSync()‎</code> اعتمادًا على المنصة المستعملة؛ في أنظمة التشغيل macOS، ولينكس، وويندوز، سيؤدي ذلك إلى رمي خطأ. أما في FreeBSD، فسيعاد تمثيلٌ بمحتوى المجلد.
<syntaxhighlight lang="javascript">// macOS, Linux, and Windows
fs.readFileSync('<directory>');
fs.readFileSync('<directory>');
// => [Error: EISDIR: illegal operation on a directory, read <directory>]
// => [Error: EISDIR: illegal operation on a directory, read <directory>]
سطر 1٬599: سطر 1٬727:
fs.readFileSync('<directory>'); // => [[JavaScript/Date|<Date>]]
fs.readFileSync('<directory>'); // => [[JavaScript/Date|<Date>]]
</syntaxhighlight>
</syntaxhighlight>
== <code>fs.readlink(path[, options], callback)‎</code> ==
==<code>fs.readlink(path[, options], callback)‎</code>==
سجل التغييرات
{| class="wikitable"
!الإصدار
!التغييرات
|-
|v10.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
|v0.1.31
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
**<code>linkString</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يقرأ هذا التابع محتوى الوصلة الرمزية ذات المسار <code>path‎</code> عبر استدعاء الدالة <code>[http://man7.org/linux/man-pages/man2/readlink.2.html readlink(2)‎]</code> بشكل غير متزامن.


الإصدار
التغييرات
v10.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v7.6.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v7.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.31
أضيف هذا التابع.
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
** <code>linkString</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يقرأ هذا التابع محتوى الوصلة الرمزية ذات المسار <code>path‎</code> عبر استدعاء الدالة <code>readlink(2)‎</code> بشكل غير متزامن.
يمرَّر دالة رد النداء وسيطين هما: <code>err‎</code>، و <code>linkString‎</code>.
يمرَّر دالة رد النداء وسيطين هما: <code>err‎</code>، و <code>linkString‎</code>.
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع مسار الوصلة الممرَّر إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'‎</code>، فسيُمرَّر مسار الوصلة المعاد ككائن من النوع <code>Buffer‎</code>.
== <code>‎fs.readlinkSync(path[, options])</code> ==
سجل التغييرات
الإصدار
التغييرات
v7.6.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v0.1.31
أضيف هذا التابع.
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
* القيم المعادة: [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يقرأ هذا التابع محتوى الوصلة الرمزية ذات المسار <code>path‎</code> عبر استدعاء الدالة <code>readlink(2)‎</code> بشكل متزامن.
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع مسار الوصلة المعاد. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'‎</code>، فسيُمرَّر مسار الوصلة المعاد ككائن من النوع <code>Buffer‎</code>.
== <code>fs.readSync(fd, buffer, offset, length, position)‎</code> ==
سجل التغييرات


الإصدار
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع مسار الوصلة الممرَّر إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'</code>، فسيُمرَّر مسار الوصلة المعاد ككائن من النوع <code>[[Node.js/buffer|Buffer‎]]</code>.
التغييرات
==<code>‎fs.readlinkSync(path[, options])‎</code>==
v10.10.0
{| class="wikitable mw-collapsible"
يمكن الآن أن يكون المعامل <code>buffer‎</code> كائنًا من النوع <code>TypedArray‎</code> أو <code>DataView‎</code>.
|+سجل التغييرات
v6.0.0
!الإصدار
يمكن أن يأخذ المعامل <code>length‎</code> الآن القيمة 0.
!التغييرات
v0.1.21
|-
أضيف هذا التابع.
|v7.6.0
 
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>‎. ما زال هذا الدعم قيد التجريب.
* <code>fd</code>:‏‏ [[JavaScript/String|<string>]]‏
|-
* <code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]] يمثِّل ذاكرة التخزين المؤقتة التي ستُكتَب فيها البيانات المقروءة من الملف.
|v0.1.31
* <code>offset</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في ذاكرة التخزين المؤقتة <code>buffer‎</code> (أي مقدار الإزاحة من بدياتها).
|أضيف هذا التابع.
* <code>length</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد قراءتها من الملف.
|}
* <code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية قراءة البيانات من الملف. إن كانت قيمة هذا الوسيط <code>null‎</code>، فستُقرَأ البيانات بدءًا من موضع المؤشر الحالي في الملف ثم سيُحدَّث موضع مؤشِّر الملف بعد انتهاء عملية القراءة. إن كانت قيمة هذا الوسيط عددًا صحيحًا، فسيبقى موضع مؤشِّر الملف دون تغيير.
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
* القيم المعادة: [[JavaScript/Number|<number>]]
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
*القيم المعادة: [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يقرأ هذا التابع محتوى الوصلة الرمزية ذات المسار <code>path‎</code> عبر استدعاء الدالة <code>[http://man7.org/linux/man-pages/man2/readlink.2.html readlink(2)‎]</code> بشكل متزامن. يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع مسار الوصلة المعاد. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'‎</code>، فسيُمرَّر مسار الوصلة المعاد ككائن من النوع <code>[[Node.js/buffer|Buffer‎]]</code>.
==<code>fs.readSync(fd, buffer, offset, length, position)‎</code>==
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v10.10.0
|يمكن الآن أن يكون المعامل <code>buffer‎</code> كائنًا من النوع <code>TypedArray‎</code> أو <code>DataView‎</code>.
|-
|v6.0.0
|يمكن أن يأخذ المعامل <code>length‎</code> الآن القيمة 0.
|-
|v0.1.21
|أضيف هذا التابع.
|}
*<code>fd</code>:‏‏ [[JavaScript/String|<string>]]‏
*<code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]] يمثِّل ذاكرة التخزين المؤقتة التي ستُكتَب فيها البيانات المقروءة من الملف.
*<code>offset</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في ذاكرة التخزين المؤقتة <code>buffer‎</code> (أي مقدار الإزاحة من بدياتها).
*<code>length</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد قراءتها من الملف.
*<code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية قراءة البيانات من الملف. إن كانت قيمة هذا الوسيط <code>null‎</code>، فستُقرَأ البيانات بدءًا من موضع المؤشر الحالي في الملف ثم سيُحدَّث موضع مؤشِّر الملف بعد انتهاء عملية القراءة. إن كانت قيمة هذا الوسيط عددًا صحيحًا، فسيبقى موضع مؤشِّر الملف دون تغيير.
*القيم المعادة: [[JavaScript/Number|<number>]]
يقرأ هذا التابع البيانات من الملف المحدَّد في واصف الملف <code>fd‎</code> المعطى ويضعها في المخزن <code>buffer‎</code> ثم يعيد عدد البايتات المقروءة.
يقرأ هذا التابع البيانات من الملف المحدَّد في واصف الملف <code>fd‎</code> المعطى ويضعها في المخزن <code>buffer‎</code> ثم يعيد عدد البايتات المقروءة.
لمزيد من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو <code>fs.read()‎</code>.
== <code>fs.realpath(path[, options], callback)‎</code> ==
سجل التغييرات
الإصدار
التغييرات
v10.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v8.0.0
أضيف دعمٌ لاستبيان أنبوب أو مقبس.
v7.6.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v7.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v6.4.0
أصبح استدعاء هذا التابع يعمل مجدَّدًا لمختلف الحالات الحدية في ويندوز.
v6.0.0
حذف المعامل <code>cache‎</code>.
v0.1.31
أضيف هذا التابع.
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
** <code>resolvedPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يحسب هذا التابع اسم المسار الأساسي (canonical pathname) بشكل غير متزامن عبر استبيان <code>.‎</code>، و <code>..‎</code>، والوصلات الرمزية.
ليس بالضرورة أن يكون اسم المسار المتعارف عليه فريدًا. يمكن للوصلات الصلبة ونظام الملفات الموصول (عبر الأمر mount) أن يكشفا عن نظام ملفات عبر أسماء مسارات متعددة.
يسلك هذا التابع نفس سلوك الدالة <code>realpath(3)‎</code> باستثناء بعض الأمور منها:
* لا تجرى أية عملية تحويل لحالة الأحرف على أنظمة الملفات الغير حساسة لحالة الأحرف.
* يعتمد العدد الأقصى للوصلات الرمزية على المنصة المستعملة، ويكون غالبًا أكبر بكثير من العدد الذي يدعمه تنفيذ <code>realpath(3)‎</code>.
يمرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code>، و <code>resolvedPath‎</code>. قد يُستخدَم <code>process.cwd‎</code> لاستبيان المسارات النسبية.
المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزة بالترميز UTF8 فقط.
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع المسار الممرَّر إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'‎</code>، فسيُمرَّر المسار المعاد ككائن من النوع <code>Buffer‎</code>.
إن استبين المسار إلى مقبسٍ أو أنبوبٍ، فسيعيد هذا التابع اسمًا يعتمد على النظام لذلك الكائن.
== <code>fs.realpath.native(path[, options], callback)‎</code> ==
أضيف في الإصدار: v9.2.0.
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
** <code>resolvedPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يعيد هذا التابع المسار الأساسي المطلق للمسار <code>path‎</code> عبر تنفيذ <code>realpath(3)‎</code> بشكل غير متزامن.
يمرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code>، و <code>resolvedPath‎</code>.
المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزة بالترميز UTF8 فقط.
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع المسار الممرَّر إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'‎</code>، فسيُمرَّر المسار المعاد ككائن من النوع <code>Buffer‎</code>.
في لينكس، عندما تُربَط Node.js مع المكتبة musl libc، يجب أن يوصل (mount) نظام الملفات procfs في <code>/proc‎</code> لكي يعمل هذا التابع بشكل صحيح. أما المكتبة glibc، فلا تشترط ذلك.
== <code>fs.realpathSync(path[, options])‎</code> ==
سجل التغييرات
الإصدار
التغييرات
v8.0.0
أضيف دعمٌ لاستبيان أنبوب أو مقبس.
v7.6.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v6.4.0
أصبح استدعاء هذا التابع يعمل مجدَّدًا لمختلف الحالات الحدية في ويندوز.
v6.0.0
حذف المعامل <code>cache‎</code>.
v0.1.31
أضيف هذا التابع.


* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
لمزيد من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو <code>[[Node.js/fs#fs.read.28fd.2C buffer.2C offset.2C length.2C position.2C callback.29.E2.80.8E|fs.read()‎]]</code>.
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
==<code>fs.realpath(path[, options], callback)‎</code>==
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
{| class="wikitable mw-collapsible"
* القيم المعادة: [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
|+سجل التغييرات
يعيد هذا التابع اسم المسار المستبين.
!الإصدار
لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو <code>fs.realpath()‎</code>.
!التغييرات
== <code>fs.realpathSync.native(path[, options])‎</code> ==
|-
|v10.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
|v8.0.0
|أضيف دعمٌ لاستبيان أنبوب أو مقبس.
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
|v6.4.0
|أصبح استدعاء هذا التابع يعمل مجدَّدًا لمختلف الحالات الحدية في ويندوز.
|-
|v6.0.0
|حُذِف المعامل <code>cache‎</code>.
|-
|v0.1.31
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
**<code>resolvedPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يحسب هذا التابع اسم المسار الأساسي (canonical pathname) بشكل غير متزامن عبر استبيان <code>.‎</code>، و <code>..‎</code>، والوصلات الرمزية. ليس بالضرورة أن يكون اسم المسار المتعارف عليه فريدًا. يمكن للوصلات الصلبة ونظام الملفات الموصول (عبر الأمر mount) أن يكشفا عن نظام ملفات عبر أسماء مسارات متعددة. يسلك هذا التابع نفس سلوك الدالة <code>[http://man7.org/linux/man-pages/man3/realpath.3.html realpath(3)‎]</code> باستثناء بعض الأمور منها:
*لا تجرى أية عملية تحويل لحالة الأحرف على أنظمة الملفات الغير حساسة لحالة الأحرف.
*يعتمد العدد الأقصى للوصلات الرمزية على المنصة المستعملة، ويكون غالبًا أكبر بكثير من العدد الذي يدعمه تنفيذ [http://man7.org/linux/man-pages/man3/realpath.3.html <code>realpath(3)‎</code>].
يمرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code>، و <code>resolvedPath‎</code>. قد يُستخدَم <code>process.cwd‎</code> لاستبيان المسارات النسبية. المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزة بالترميز UTF8 فقط. يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع المسار الممرَّر إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'</code>، فسيُمرَّر المسار المعاد ككائن من النوع <code>[[Node.js/buffer|Buffer‎]]</code>. إن استبين المسار إلى مقبسٍ أو أنبوبٍ، فسيعيد هذا التابع اسمًا يعتمد على النظام لذلك الكائن.
==<code>fs.realpath.native(path[, options], callback)‎</code>==
أضيف في الإصدار: v9.2.0.
أضيف في الإصدار: v9.2.0.
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
**<code>resolvedPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يعيد هذا التابع المسار الأساسي المطلق للمسار <code>path‎</code> عبر تنفيذ [http://man7.org/linux/man-pages/man3/realpath.3.html <code>realpath(3)‎</code>] بشكل غير متزامن. يمرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code>، و <code>resolvedPath‎</code>. المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزة بالترميز UTF8 فقط. يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع المسار الممرَّر إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'</code>، فسيُمرَّر المسار المعاد ككائن من النوع [[Node.js/buffer|<code>Buffer‎</code>]]. في لينكس، عندما تُربَط Node.js مع المكتبة musl libc، يجب أن يوصل (mount) نظام الملفات procfs في ‎<code>/proc‎</code> لكي يعمل هذا التابع بشكل صحيح. أما المكتبة glibc، فلا تشترط ذلك.
==<code>fs.realpathSync(path[, options])‎</code>==
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v8.0.0
|أضيف دعمٌ لاستبيان أنبوب أو مقبس.
|-
|v7.6.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>‎. ما زال هذا الدعم قيد التجريب.
|-
|v6.4.0
|أصبح استدعاء هذا التابع يعمل مجدَّدًا لمختلف الحالات الحدية في ويندوز.
|-
|v6.0.0
|حُذِف المعامل <code>cache‎</code>.
|-
|v0.1.31
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
*القيم المعادة: [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يعيد هذا التابع اسم المسار المستبين. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو <code>[[Node.js/fs#fs.realpath.28path.5B.2C options.5D.2C callback.29.E2.80.8E|fs.realpath()‎]]</code>.
==<code>fs.realpathSync.native(path[, options])‎</code>==
أضيف في الإصدار: v9.2.0.
أضيف في الإصدار: v9.2.0.
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
* القيم المعادة: [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
*القيم المعادة: [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
يعيد هذا التابع المسار الأساسي المطلق للمسار <code>path‎</code> عبر تنفيذ <code>realpath(3)‎</code> بشكل متزامن.
يعيد هذا التابع المسار الأساسي المطلق للمسار <code>path‎</code> عبر تنفيذ <code>[http://man7.org/linux/man-pages/man3/realpath.3.html realpath(3)]‎</code> بشكل متزامن. المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزةً بالترميز UTF8 فقط. يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع المسار المعاد. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'</code>، فسيُمرَّر المسار المعاد ككائن من النوع [[Node.js/buffer|<code>Buffer‎</code>]]. في لينكس، عندما تُربَط Node.js مع المكتبة musl libc، يجب أن يوصل (mount) نظام الملفات procfs في <code>/proc‎</code> لكي يعمل هذا التابع بشكل صحيح. أمَّا المكتبة glibc، فلا تشترط ذلك.
المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزةً بالترميز UTF8 فقط.
==<code>fs.rename(oldPath, newPath, callback)‎</code>==
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع المسار المعاد. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'</code>، فسيُمرَّر المسار المعاد ككائن من النوع <code>Buffer‎</code>.
{| class="wikitable mw-collapsible"
في لينكس، عندما تُربَط Node.js مع المكتبة musl libc، يجب أن يوصل (mount) نظام الملفات procfs في <code>/proc‎</code> لكي يعمل هذا التابع بشكل صحيح. أما المكتبة glibc، فلا تشترط ذلك.
|+سجل التغييرات
== <code>fs.rename(oldPath, newPath, callback)‎</code> ==
!الإصدار
سجل التغييرات
!التغييرات
 
|-
الإصدار
|v10.0.0
التغييرات
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v10.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|v7.6.0
v7.6.0
|يمكن الآن أن يكون الوسيط <code>oldPath</code> والوسيط <code>newPath</code> كائنات من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
يمكن الآن أن يكون الوسيط <code>oldPath</code> والوسيط <code>newPath</code> كائنات من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
v7.0.0
|v7.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.0.2
|-
أضيف هذا التابع.
|v0.0.2
 
|أضيف هذا التابع.
* <code>oldPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|}
* <code>newPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>oldPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
*<code>newPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
يغيِّر هذا التابع اسم الملف <code>oldPath‎</code> إلى <code>newPath‎</code> المعطى بشكل غير متزامن. إن كان الملف <code>newPath‎</code> موجودًا من قبل، فسيُستبدَل آنذاك. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
انظر أيضًا دالة النظام <code>rename(2)‎</code>.
يغيِّر هذا التابع اسم الملف <code>oldPath‎</code> إلى <code>newPath‎</code> المعطى بشكل غير متزامن. إن كان الملف <code>newPath‎</code> موجودًا من قبل، فسيُستبدَل آنذاك. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. انظر أيضًا دالة النظام <code>[http://man7.org/linux/man-pages/man2/rename.2.html rename(2)]‎</code>.<syntaxhighlight lang="javascript">fs.rename('oldFile.txt', 'newFile.txt', (err) => {
<syntaxhighlight lang="javascript">fs.rename('oldFile.txt', 'newFile.txt', (err) => {
   if (err) throw err;
   if (err) throw err;
   console.log('Rename complete!');
   console.log('Rename complete!');
});
});
</syntaxhighlight>
</syntaxhighlight>
== <code>‎fs.renameSync(oldPath, newPath)</code> ==
==<code>‎fs.renameSync(oldPath, newPath)</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
الإصدار
!الإصدار
التغييرات
!التغييرات
v7.6.0
|-
يمكن الآن أن يكون الوسيط <code>oldPath</code> والوسيط <code>newPath</code> كائنات من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|v7.6.0
v0.1.21
|يمكن الآن أن يكون الوسيط <code>oldPath</code> والوسيط <code>newPath</code> كائنات من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
أضيف هذا التابع.
|-
 
|v0.1.21
* <code>oldPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|أضيف هذا التابع.
* <code>newPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|}
يغيِّر هذا التابع اسم الملف <code>oldPath‎</code> إلى <code>newPath‎</code> المعطى بشكل متزامن. إن كان الملف <code>newPath‎</code> موجودًا من قبل، فسيُستبدَل آنذاك.
*<code>oldPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
انظر أيضًا دالة النظام <code>rename(2)‎</code>.
*<code>newPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
== <code>‎fs.rmdir(path, callback)</code> ==
يغيِّر هذا التابع اسم الملف <code>oldPath‎</code> إلى <code>newPath‎</code> المعطى بشكل متزامن. إن كان الملف <code>newPath‎</code> موجودًا من قبل، فسيُستبدَل آنذاك. انظر أيضًا دالة النظام <code>[http://man7.org/linux/man-pages/man2/rename.2.html rename(2)]‎</code>.
سجل التغييرات
==<code>‎fs.rmdir(path, callback)</code>==
 
{| class="wikitable mw-collapsible"
الإصدار
|+سجل التغييرات
التغييرات
!الإصدار
v10.0.0
!التغييرات
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
v7.6.0
|v10.0.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v7.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|v7.6.0
v0.0.2
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
أضيف هذا التابع.
|-
 
|v7.0.0
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
|-
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
|v0.0.2
يحذف هذا التابع المجلد ذا المسار <code>path‎</code> عبر استدعاء <code>rmdir(2)‎</code> بشكل غير متزامن.
|أضيف هذا التابع.
يؤدي استعمال التابع <code> </code> مع ملف (وليس مجلد) إلى حصول الخطأ <code>ENOENT‎</code> في ويندوز والخطأ <code>ENOTDIR‎</code> في أنظمة POSIX.
|}
== <code>‎fs.rmdirSync(path)</code> ==
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
سجل التغييرات
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
 
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
الإصدار
يحذف هذا التابع المجلد ذا المسار <code>path‎</code> عبر استدعاء <code>[http://man7.org/linux/man-pages/man2/rmdir.2.html rmdir(2)‎]</code> بشكل غير متزامن. يؤدي استعمال التابع <code>fs.rmdir()‎</code> مع ملف (وليس مجلد) إلى حصول الخطأ <code>ENOENT‎</code> في ويندوز والخطأ <code>ENOTDIR‎</code> في أنظمة POSIX.
التغييرات
==<code>‎fs.rmdirSync(path)</code>==
v7.6.0
{| class="wikitable mw-collapsible"
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
|+سجل التغييرات
v0.1.21
!الإصدار
أضيف هذا التابع.
!التغييرات
 
|-
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|v7.6.0
يحذف هذا التابع المجلد ذا المسار <code>path‎</code> عبر استدعاء <code>rmdir(2)‎</code> بشكل متزامن.
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
يؤدي استعمال التابع <code> ‎</code> مع ملف (وليس مجلد) إلى حصول الخطأ <code>ENOENT‎</code> في ويندوز والخطأ <code>ENOTDIR‎</code> في أنظمة POSIX.
|-
== <code>‎fs.stat(path[, options], callback)</code> ==
|v0.1.21
سجل التغييرات
|أضيف هذا التابع.
 
|}
الإصدار
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
التغييرات
يحذف هذا التابع المجلد ذا المسار <code>path‎</code> عبر استدعاء [http://man7.org/linux/man-pages/man2/rmdir.2.html <code>rmdir(2)‎</code>] بشكل متزامن. يؤدي استعمال التابع <code>fs.rmdirSync()‎</code> مع ملف (وليس مجلد) إلى حصول الخطأ <code>ENOENT‎</code> في ويندوز والخطأ <code>ENOTDIR‎</code> في أنظمة POSIX.
v10.5.0
==<code>‎fs.stat(path[, options], callback)</code>==
يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
{| class="wikitable mw-collapsible"
v10.0.0
|+سجل التغييرات
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
!الإصدار
v7.6.0
!التغييرات
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
v7.0.0
|v10.5.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع <code>bigint</code>.
v0.0.2
|-
أضيف هذا التابع.
|v10.0.0
 
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|-
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]
|v7.6.0
** <code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
|-
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
|v7.0.0
* <code>stats</code>:‏ <fs.Stats>
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
يجلب هذا التابع معلومات حول الملف ذي المسار <code>path‎</code> عبر استدعاء دالة النظام <code>stat(2)‎</code> بشكل غير متزامن. يمرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code>، و <code>stats‎</code>، إذ <code>stats‎</code> هو الكائن <code>fs.Stats‎</code>.
|-
إن حصل خطأ، سيكون <code>err.code‎</code> أحد أخطاء النظام الشائعة.
|v0.0.2
لا ينصح باستعمال التابع <code>fs.stat()‎</code> للتحقق من وجود الملف قبل استدعاء <code>fs.open()‎</code>، أو <code>fs.readFile()‎</code>، أو <code>fs.writeFile()‎</code>. بدلًا من ذلك، يجب على شيفرة المستخدم فتح الملف والقراءة منه أو الكتابة عليه مباشرةً ومعالجة الخطأ المرمي إن لم يكن الملف موجودًا.
|أضيف هذا التابع.
للتحقق من وجود ملفٍ دون التعديل عليه بعد ذلك، ينصح باستعمال التابع <code>fs.access()‎</code>.
|}
== <code>fs.statSync(path[, options])‎</code> ==
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
سجل التغييرات
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]
 
**<code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
الإصدار
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
التغييرات
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
v10.5.0
*<code>stats</code>:‏ <fs.Stats>
يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
يجلب هذا التابع معلومات حول الملف ذي المسار <code>path‎</code> عبر استدعاء دالة النظام <code>[http://man7.org/linux/man-pages/man2/stat.2.html stat(2)‎]</code> بشكل غير متزامن. يمرَّر إلى دالة رد النداء وسيطين هما: <code>err‎</code>، و <code>stats‎</code>، إذ <code>stats‎</code> هو الكائن <code>fs.Stats‎</code>. إن حصل خطأ، سيكون <code>err.code‎</code> أحد أخطاء النظام الشائعة. لا ينصح باستعمال التابع <code>fs.stat()‎</code> للتحقق من وجود الملف قبل استدعاء <code>[[Node.js/fs#fs.open.28path.2C flags.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.open()‎]]</code>، أو <code>[[Node.js/fs#.E2.80.8Efs.readFile.28path.5B.2C options.5D.2C callback.29.E2.80.8E|fs.readFile()‎]]</code>، أو <code>[[Node.js/fs#.E2.80.8Efs.readFile.28path.5B.2C options.5D.2C callback.29.E2.80.8E|fs.writeFile()‎]]</code>. بدلًا من ذلك، يجب على شيفرة المستخدم فتح الملف والقراءة منه أو الكتابة عليه مباشرةً ومعالجة الخطأ المرمي إن لم يكن الملف موجودًا. للتحقق من وجود ملفٍ دون التعديل عليه بعد ذلك، ينصح باستعمال التابع <code>[[Node.js/fs#fs.access.28path.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.access()‎]]</code>.
v7.6.0
==<code>fs.statSync(path[, options])‎</code>==
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
{| class="wikitable mw-collapsible"
v0.1.21
|+سجل التغييرات
أضيف هذا التابع.
!الإصدار
 
!التغييرات
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|-
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]
|v10.5.0
** <code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
|يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع <code>bigint</code>.
* القيم المعادة: <fs.Stats>
|-
يجلب هذا التابع معلومات حول الملف ذي المسار <code>path‎</code> عبر استدعاء دالة النظام <code>stat(2)‎</code> بشكل متزامن.
|v7.6.0
== <code>fs.symlink(target, path[, type], callback)‎</code> ==
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
سجل التغييرات
|-
 
|v0.1.21
الإصدار
|أضيف هذا التابع.
التغييرات
|}
v7.6.0
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
يمكن الآن أن يكون الوسيط <code>target</code> والوسيط <code>path</code> كائنات من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]
v0.1.31
**<code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
أضيف هذا التابع.
*القيم المعادة: <fs.Stats>
 
يجلب هذا التابع معلومات حول الملف ذي المسار <code>path‎</code> عبر استدعاء دالة النظام <code>[http://man7.org/linux/man-pages/man2/stat.2.html stat(2)‎]</code> بشكل متزامن.
* <code>target</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
==<code>fs.symlink(target, path[, type], callback)‎</code>==
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
{| class="wikitable mw-collapsible"
* <code>type</code>:‏ [[JavaScript/String|<string>]]‏ القيمة الافتراضية هي: <code>'file'</code>.
|+سجل التغييرات
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
!الإصدار
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
!التغييرات
ينشئ هذا التابع وصلة رمزيَّةً لملف المحدد بالمسار <code>target‎</code> عبر استدعاء <code>symlink(2)‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
|-
يمكن ضبط الوسيط <code>type‎</code> إلى القيمة <code>'dir'</code>، أو <code>'file'</code>، أو <code>'junction'</code> وهو متاح في ويندوز فقط (يُتجاهل في المنصات الأخرى). تتطلب نقاط الوصل (junction points) في ويندوز أن يكون المسار الهدف مطلقًا. عند استعمال <code>'junction'</code>، فسيحول الوسيط <code>target‎</code> تلقائيًّا إلى مسار مطلق. إليك هذا المثال الذي سيُنشأ وصلة رمزية تدعى "new-port" تشير إلى الملف "foo":
|v7.6.0
<syntaxhighlight lang="javascript">fs.symlink('./foo', './new-port', callback);
|يمكن الآن أن يكون الوسيط <code>target</code> والوسيط <code>path</code> كائنات من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|-
|v0.1.31
|أضيف هذا التابع.
|}
*<code>target</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>type</code>:‏ [[JavaScript/String|<string>]]‏ القيمة الافتراضية هي: <code>'file'</code>.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
ينشئ هذا التابع وصلة رمزيَّةً لملف المحدد بالمسار <code>target‎</code> عبر استدعاء <code>[http://man7.org/linux/man-pages/man2/symlink.2.html symlink(2)]‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. يمكن ضبط الوسيط <code>type‎</code> إلى القيمة <code>'dir'</code>، أو <code>'file'</code>، أو <code>'junction'</code> وهو متاح في ويندوز فقط (يُتجاهل في المنصات الأخرى). تتطلب نقاط الوصل (junction points) في ويندوز أن يكون المسار الهدف مطلقًا. عند استعمال <code>'junction'</code>، فسيحول الوسيط <code>target‎</code> تلقائيًّا إلى مسار مطلق. إليك هذا المثال الذي سيُنشأ وصلة رمزية تدعى "new-port" تشير إلى الملف "foo":<syntaxhighlight lang="javascript">fs.symlink('./foo', './new-port', callback);
</syntaxhighlight>
</syntaxhighlight>
 
==<code>fs.symlinkSync(target, path[, type])‎</code>==
== <code>fs.symlinkSync(target, path[, type])‎</code> ==
{| class="wikitable mw-collapsible"
سجل التغييرات
|+سجل التغييرات
 
!الإصدار
الإصدار
!التغييرات
التغييرات
|-
v7.6.0
|v7.6.0
يمكن الآن أن يكون الوسيط <code>target</code> والوسيط <code>path</code> كائنات من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
|يمكن الآن أن يكون الوسيط <code>target</code> والوسيط <code>path</code> كائنات من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
v0.1.31
|-
أضيف هذا التابع.
|v0.1.31
 
|أضيف هذا التابع.
* <code>target</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|}
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>target</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>type</code>:‏ [[JavaScript/String|<string>]]‏ القيمة الافتراضية هي: <code>'file'</code>.
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
*<code>type</code>:‏ [[JavaScript/String|<string>]]‏ القيمة الافتراضية هي: <code>'file'</code>.
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
ينشئ هذا التابع وصلة رمزيَّةً لملف المحدد بالمسار <code>target‎</code> عبر استدعاء <code>symlink(2)‎</code> بشكل متزامن.
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
لمزيد من التفاصيل، ارجع إلى الإصدار الغير متزامن من هذا التابع الذي هو <code>fs.symlink()‎</code>.
ينشئ هذا التابع وصلة رمزيَّةً لملف المحدد بالمسار <code>target‎</code> عبر استدعاء <code>[http://man7.org/linux/man-pages/man2/symlink.2.html symlink(2)]‎</code> بشكل متزامن. لمزيد من التفاصيل، ارجع إلى الإصدار الغير متزامن من هذا التابع الذي هو <code>[[Node.js/fs#fs.symlink.28target.2C path.5B.2C type.5D.2C callback.29.E2.80.8E|fs.symlink()]]‎</code>.
== <code>‎fs.truncate(path[, len], callback)</code> ==
==<code>‎fs.truncate(path[, len], callback)</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
الإصدار
!الإصدار
التغييرات
!التغييرات
v10.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|v10.0.0
v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
v0.8.6
|v7.0.0
أضيف هذا التابع.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
 
|-
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|v0.8.6
* <code>len</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0‎</code>.
|أضيف هذا التابع.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
|}
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
يقطع هذا التابع الملف ذا المسار <code>path</code> إلى الحجم <code>len‎</code> عبر استدعاء دالة النظام <code>truncate(2)‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
*<code>len</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0‎</code>.
كان بالإمكان أن يُمرَّر واصف ملف كوسيط أول أيضًا، وسيستدعى في هذه الحالة التابع <code>fs.ftruncate()‎</code>، إلا أنه ذلك قد أُهمِل وقد يؤدي إلى رمي خطأ في المستقبل.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
== <code>‎fs.truncateSync(path[, len])</code> ==
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
يقطع هذا التابع الملف ذا المسار <code>path</code> إلى الحجم <code>len‎</code> عبر استدعاء دالة النظام <code>[http://man7.org/linux/man-pages/man2/truncate.2.html truncate(2)]‎</code> بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. كان بالإمكان أن يُمرَّر واصف ملف كوسيط أول أيضًا، وسيستدعى في هذه الحالة التابع <code>[[Node.js/fs#fs.ftruncate.28fd.5B.2C len.5D.2C callback.29.E2.80.8E|fs.ftruncate()]]‎</code>، إلا أنه ذلك قد أُهمِل وقد يؤدي إلى رمي خطأ في المستقبل.
==<code>‎fs.truncateSync(path[, len])</code>==
أضيف في الإصدار: v0.8.6.
أضيف في الإصدار: v0.8.6.
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>len</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0‎</code>.
*<code>len</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0‎</code>.
يقطع هذا التابع الملف ذا المسار <code>path</code> إلى الحجم <code>len‎</code> عبر استدعاء دالة النظام <code>truncate(2)‎</code> بشكل متزامن.
يقطع هذا التابع الملف ذا المسار <code>path</code> إلى الحجم <code>len‎</code> عبر استدعاء دالة النظام <code>[http://man7.org/linux/man-pages/man2/truncate.2.html truncate(2)]‎</code> بشكل متزامن. كان بالإمكان أن يُمرَّر واصف ملف كوسيط أول أيضًا، وسيستدعى في هذه الحالة التابع <code>[[Node.js/fs#fs.ftruncate.28fd.5B.2C len.5D.2C callback.29.E2.80.8E|fs.ftruncate()‎]]</code>، إلا أنه ذلك قد أُهمِل وقد يؤدي إلى رمي خطأ في المستقبل.
كان بالإمكان أن يُمرَّر واصف ملف كوسيط أول أيضًا، وسيستدعى في هذه الحالة التابع <code>fs.ftruncate()‎</code>، إلا أنه ذلك قد أُهمِل وقد يؤدي إلى رمي خطأ في المستقبل.
==<code>fs.unlink(path, callback)‎</code>==
== <code>fs.unlink(path, callback)‎</code> ==
{| class="wikitable mw-collapsible"
سجل التغييرات
|+سجل التغييرات
 
!الإصدار
الإصدار
!التغييرات
التغييرات
|-
v10.0.0
|v10.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v7.6.0
|-
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|v7.6.0
v7.0.0
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
v0.0.2
|v7.0.0
أضيف هذا التابع.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
 
|-
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|v0.0.2
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
|أضيف هذا التابع.
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
|}
يزيل هذا التابع ملفًا أو وصلةً رمزيةً بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
<syntaxhighlight lang="javascript">// هو ملف طبيعي 'path/file.txt' بفرض أن  الملف
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
يزيل هذا التابع ملفًا أو وصلةً رمزيةً بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.<syntaxhighlight lang="javascript">// هو ملف طبيعي 'path/file.txt' بفرض أن  الملف
fs.unlink('path/file.txt', (err) => {
fs.unlink('path/file.txt', (err) => {
   if (err) throw err;
   if (err) throw err;
   console.log('path/file.txt was deleted');
   console.log('path/file.txt was deleted');
});
});
</syntaxhighlight>
</syntaxhighlight>لن يعمل التابع <code>fs.unlink()‎</code> إن كان المسار فارغًا أو يشير إلى مجلد أو غير ذلك من الحالات. إن أردت حذف مجلد، فاستعمل التابع <code>[[Node.js/fs#.E2.80.8Efs.rmdir.28path.2C callback.29|fs.rmdir()‎]]</code>. انظر أيضًا دالة النظام <code>[http://man7.org/linux/man-pages/man2/unlink.2.html unlink(2)]‎</code>.
لن يعمل التابع <code>fs.unlink()‎</code> إن كان المسار فارغًا أو يشير إلى مجلد أو غير ذلك من الحالات. إن أردت حذف مجلد، فاستعمل التابع <code>fs.rmdir()‎</code>.
==<code>fs.unlinkSync(path)‎</code>==
انظر أيضًا دالة النظام <code>unlink(2)‎</code>.
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
== <code>fs.unlinkSync(path)‎</code> ==
!الإصدار
سجل التغييرات
!التغييرات
 
|-
الإصدار
|v7.6.0
التغييرات
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v7.6.0
|-
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|v0.1.21
v0.1.21
|أضيف هذا التابع.
أضيف هذا التابع.
|}
 
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
يزيل هذا التابع ملفًا أو وصلةً رمزيةً بشكل غير متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>. انظر أيضًا دالة النظام <code>[http://man7.org/linux/man-pages/man2/unlink.2.html unlink(2)]‎</code>.
يزيل هذا التابع ملفًا أو وصلةً رمزيةً بشكل غير متزامن. يعيد هذا التابع القيمة <code>undefined‎</code>.
==<code>fs.unwatchFile(filename[, listener])‎</code>==
انظر أيضًا دالة النظام <code>unlink(2)‎</code>.
== <code>fs.unwatchFile(filename[, listener])‎</code> ==
أضيف في الإصدار: v0.1.31.
أضيف في الإصدار: v0.1.31.
* <code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>path</code>:‏ [[JavaScript/Function|<Function>]]‏ وسيط اختياري يمثل المستمع السابق الذي ربط باستعمال <code>fs.watchFile()‎</code>.
*<code>path</code>:‏ [[JavaScript/Function|<Function>]]‏ وسيط اختياري يمثل المستمع السابق الذي ربط باستعمال <code>fs.watchFile()‎</code>.
يوقف هذا التابع عملية مراقبة التغييرات التي تحصل في الملف <code>filename‎</code>. إن أعطي الوسيط <code>listener‎</code>، فسيحذف التابع هذا المستمع المحدد فقط. خلا ذلك، سيزيل جميع المستمعين موقفًا عملية مراقبة الملف <code>filename‎</code> بشكل فعَّال.
يوقف هذا التابع عملية مراقبة التغييرات التي تحصل في الملف <code>filename‎</code>. إن أعطي الوسيط <code>listener‎</code>، فسيحذف التابع هذا المستمع المحدد فقط. خلا ذلك، سيزيل جميع المستمعين موقفًا عملية مراقبة الملف <code>filename‎</code> بشكل فعَّال. يمثِّل استدعاء التابع <code>fs.unwatchFile()‎</code> مع اسم ملف لا يراقب آنذاك عمليةً فارغةً ولا يعد ذلك خطأً. يعدُّ استعمال التابع <code>[[Node.js/fs#fs.watch.28filename.5B.2C options.5D.5B.2C listener.5D.29.E2.80.8E|fs.watch()‎]]</code> أكثر فاعليةً من استعمال <code>[[Node.js/fs#fs.watchFile.28filename.5B.2C options.5D.2C listener.29.E2.80.8E|fs.watchFile()‎]]</code>، و <code>fs.unwatchFile()‎</code>. يجب أن يُستعمَل  التابع [[Node.js/fs#fs.watch.28filename.5B.2C options.5D.5B.2C listener.5D.29.E2.80.8E|<code>fs.watch()‎</code>]] بدلًا من التابع [[Node.js/fs#fs.watchFile.28filename.5B.2C options.5D.2C listener.29.E2.80.8E|<code>fs.watchFile()‎</code>]]، و <code>fs.unwatchFile()‎</code> ما أمكن ذلك.
يمثِّل استدعاء التابع <code>fs.unwatchFile()‎</code> مع اسم ملف لا يراقب آنذاك عمليةً فارغةً ولا يعد ذلك خطأً.
==<code>fs.utimes(path, atime, mtime, callback)‎</code>==
يعدُّ استعمال التابع <code>fs.watch()‎</code> أكثر فاعليةً من استعمال <code>fs.watchFile()‎</code>، و <code>fs.unwatchFile()‎</code>. يجب أن يُستعمَل  التابع <code>fs.watch()‎</code> بدلًا من التابع <code>fs.watchFile()‎</code>، و <code>fs.unwatchFile()‎</code> ما أمكن ذلك.
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
== <code>fs.utimes(path, atime, mtime, callback)‎</code> ==
!الإصدار
سجل التغييرات
!التغييرات
 
|-
الإصدار
|v10.0.0
التغييرات
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v10.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|v8.0.0
v8.0.0
|لا يُسمَح بعد الآن بأن تُستعمَل القيمة <code>NaN‎</code>، والقيمة <code>Infinity‎</code>، والقيمة <code>Infinity-</code> لتكون محدِّدات للوقت (time specifiers).
لا يُسمَح بعد الآن بأن تُستعمَل القيمة <code>NaN‎</code>، والقيمة <code>Infinity‎</code>، والقيمة <code>-Infinity</code> لتكون محدِّدات للوقت (time specifiers).
|-
v7.6.0
|v7.6.0
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:‎</code>. ما زال هذا الدعم قيد التجريب.
v7.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|v7.0.0
v4.1.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة <code>NaN‎</code>، والقيمة <code>Infinity‎</code> لتكون محدِّدات للوقت (time specifiers).
|-
v0.4.2
|v4.1.0
أضيف هذا التابع.
|يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة <code>NaN‎</code>، والقيمة <code>Infinity‎</code> لتكون محدِّدات للوقت (time specifiers).
 
|-
* <code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|v0.4.2
* <code>atime</code>:‏ [[JavaScript/Number|<number>]]‏ | [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
|أضيف هذا التابع.
* <code>mtime</code>:‏ [[JavaScript/Number|<number>]] ‏| [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
|}
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
*<code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
*<code>atime</code>:‏ [[JavaScript/Number|<number>]]‏ | [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار المعطى بشكل غير متزامن.
*<code>mtime</code>:‏ [[JavaScript/Number|<number>]] ‏| [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
يخضع الوسيطان <code>atime‎</code> و <code>mtime‎</code> إلى القاعدتين التاليتين:
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
* يمكن أن تكون القيم إما أعدادًا تمثل الوقت في توقيت يونكس (Unix epoch time)، أو التواريخ، أو سلاسل نصية عددية مثل <code>'123456789.0'‎</code>.
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
* إن لم يكن بالإمكان تحويل القيمة إلى عددٍ، أو كانت <code>NaN‎</code> أو <code>Infinity‎</code> أو <code>-Infinity‎</code>، فسيُرمَى خطأٌ.
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار المعطى بشكل غير متزامن. يخضع الوسيطان <code>atime‎</code> و <code>mtime‎</code> إلى القاعدتين التاليتين:
== <code>‎fs.utimesSync(path, atime, mtime)</code> ==
*يمكن أن تكون القيم إما أعدادًا تمثل الوقت في توقيت يونكس (Unix epoch time)، أو التواريخ، أو سلاسل نصية عددية مثل <code>'123456789.0'‎</code>.
سجل التغييرات
*إن لم يكن بالإمكان تحويل القيمة إلى عددٍ، أو كانت <code>NaN‎</code> أو <code>Infinity‎</code> أو <code>-Infinity‎</code>، فسيُرمَى خطأٌ.
 
==<code>‎fs.utimesSync(path, atime, mtime)</code>==
الإصدار
{| class="wikitable mw-collapsible"
التغييرات
|+سجل التغييرات
v8.0.0
!الإصدار
لا يُسمَح بعد الآن بأن تُستعمَل القيمة <code>NaN‎</code>، والقيمة <code>Infinity‎</code>، والقيمة <code>-Infinity</code> لتكون محدِّدات للوقت (time specifiers).
!التغييرات
v7.6.0
|-
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
|v8.0.0
v4.1.0
|لا يُسمَح بعد الآن بأن تُستعمَل القيمة <code>NaN‎</code>، والقيمة <code>Infinity‎</code>، والقيمة <code>Infinity-</code> لتكون محدِّدات للوقت (time specifiers).
يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة <code>NaN‎</code>، والقيمة <code>Infinity‎</code> لتكون محدِّدات للوقت (time specifiers).
|-
v0.4.2
|v7.6.0
أضيف هذا التابع.
|يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
 
|-
* <code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|v4.1.0
* <code>atime</code>:‏ [[JavaScript/Number|<number>]]‏ | [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
|يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة <code>NaN‎</code>، والقيمة <code>Infinity‎</code> لتكون محدِّدات للوقت (time specifiers).
* <code>mtime</code>:‏ [[JavaScript/Number|<number>]] ‏| [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
|-
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار المعطى بشكل متزامن.
|v0.4.2
لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو <code>fs.utimes()‎</code>.
|أضيف هذا التابع.
== <code>fs.watch(filename[, options][, listener])‎</code> ==
|}
سجل التغييرات
*<code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
 
*<code>atime</code>:‏ [[JavaScript/Number|<number>]]‏ | [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
الإصدار
*<code>mtime</code>:‏ [[JavaScript/Number|<number>]] ‏| [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
التغييرات
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار المعطى بشكل متزامن. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو <code>[[Node.js/fs#fs.utimes.28path.2C atime.2C mtime.2C callback.29.E2.80.8E|fs.utimes()‎]]</code>.
v7.6.0
==<code>fs.watch(filename[, options][, listener])‎</code>==
يمكن الآن أن يكون الوسيط <code>filename</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
{| class="wikitable mw-collapsible"
v7.0.0
|+سجل التغييرات
لن يُعدَّل الكائن <code>options‎</code> المُمرَّر مطلقًا.
!الإصدار
v0.5.10
!التغييرات
أضيف هذا التابع.
|-
 
|v7.6.0
* <code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|يمكن الآن أن يكون الوسيط <code>filename</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
* <code>options</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Object|<Object>]]
|-
** <code>persistent</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إن كان يجب أن تستمر العملية بالعمل ما دامت عملية مراقبة الملف مستمرة. القيمة الافتراضية هي: <code>true‎</code>.
|v7.0.0
** <code>recursive</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إن كان يجب مراقبة جميع المجلدات الفرعية أيضًا أم يجب مراقبة المجلد المحدد فقط. يُستعمَل هذا الخيار عندما يراد مراقبة مجلد، ولا يعمل إلا على المنصات المدعومة (اطلع على «تحذيرات يجب أخذها بالحسبان» في الأسفل). القيمة الافتراضية هي: <code>false‎</code>.
|لن يُعدَّل الكائن <code>options‎</code> المُمرَّر مطلقًا.
** <code>encoding</code>:‏ [[JavaScript/String|<string>]] يحدد ترميز المحارف المراد استعماله من أجل اسم الملف الممرر إلى المستمع. القيمة الافتراضية هي: <code>'utf8'‎</code>.
|-
* <code>listener</code>:‏ [[JavaScript/Function|<Function>]]‏ | <undefined> القيمة الافتراضية هي: <code>undefined‎</code>.
|v0.5.10
** <code>eventType</code>:‏ [[JavaScript/String|<string>]]
|أضيف هذا التابع.
** <code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
|}
* القيم المعادة: [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81_fs.FSWatcher.E2.80.8E|<fs.FSWatcher>]]
*<code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
ينشئ هذا التابع عملية مراقبة على <code>filename‎</code> لمراقبة جميع التغييرات الحاصلة، إذ إما أن يكون <code>filename‎</code> ملفًا أو مجلدًا.
*<code>options</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Object|<Object>]]
الوسيط <code>options‎</code> الممرر إلى هذا التابع اختياري. إن أعطي وكان سلسلة نصية، فسيُحدِّد حينئذٍ الترميز <code>encoding‎</code> المراد استعماله. خلا ذلك، يجب تمرير الوسيط <code>options‎</code> ككائن.
**<code>persistent</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إن كان يجب أن تستمر العملية بالعمل ما دامت عملية مراقبة الملف مستمرة. القيمة الافتراضية هي: <code>true‎</code>.
يمرَّر إلى دالة رد النداء التي تمثل المستمع (listener) وسيطان هما: <code>eventType‎</code> و <code>filename‎</code>؛ يأخذ الوسيط <code>eventType‎‎</code> إما القيمة <code>'rename'</code> أو القيمة <code>'change'</code>، بينما يمثل الوسيط <code>filename‎</code> اسم الملف الذي أطلَق الحدث.
**<code>recursive</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إن كان يجب مراقبة جميع المجلدات الفرعية أيضًا أم يجب مراقبة المجلد المحدد فقط. يُستعمَل هذا الخيار عندما يراد مراقبة مجلد، ولا يعمل إلا على المنصات المدعومة (اطلع على «<nowiki/>[[Node.js/fs#.D8.AA.D8.AD.D8.B0.D9.8A.D8.B1.D8.A7.D8.AA .D9.8A.D8.AC.D8.A8 .D8.A3.D8.AE.D8.B0.D9.87.D8.A7 .D8.A8.D8.A7.D9.84.D8.AD.D8.B3.D8.A8.D8.A7.D9.86|تحذيرات يجب أخذها بالحسبان]]» في الأسفل). القيمة الافتراضية هي: <code>false‎</code>.
في أغلب منصات التشغيل، يُطلَق الحدث <code>'rename'</code> متى ما ظهر اسم الملف أو اختفى في المجلد.
**<code>encoding</code>:‏ [[JavaScript/String|<string>]] يحدد ترميز المحارف المراد استعماله من أجل اسم الملف الممرر إلى المستمع. القيمة الافتراضية هي: <code>'utf8'</code>.
يُربَط رد النداء المستمع مع الحدث <code>'change'</code> الذي يُطلَق عبر <code>fs.FSWatcher‎</code>، ولكن هذا الحدث لا يشبه القيمة <code>'change'</code> الممررة إلى الوسيط <code>eventType‎</code>.
*<code>listener</code>:‏ [[JavaScript/Function|<Function>]]‏ | <undefined> القيمة الافتراضية هي: <code>undefined‎</code>.
=== تحذيرات يجب أخذها بالحسبان ===
**<code>eventType</code>:‏ [[JavaScript/String|<string>]]
الواجهة البرمجية <code>fs.watch‎</code> ليست ثابتة 100% عبر جميع المنصات، إذ تكون غير متوافرة في بعض الحالات.
**<code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
الخيار <code>recursive‎</code> مدعومٌ فقط في macOS وويندوز.
*القيم المعادة: [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.FSWatcher.E2.80.8E|<fs.FSWatcher>]]
==== التوافر ====
ينشئ هذا التابع عملية مراقبة على <code>filename‎</code> لمراقبة جميع التغييرات الحاصلة، إذ إما أن يكون <code>filename‎</code> ملفًا أو مجلدًا. الوسيط <code>options‎</code> الممرر إلى هذا التابع اختياري. إن أعطي وكان سلسلة نصية، فسيُحدِّد حينئذٍ الترميز <code>encoding‎</code> المراد استعماله. خلا ذلك، يجب تمرير الوسيط <code>options‎</code> ككائن. يمرَّر إلى دالة رد النداء التي تمثل المستمع (listener) وسيطان هما: <code>eventType‎</code> و <code>filename‎</code>؛ يأخذ الوسيط <code>eventType‎‎</code> إما القيمة <code>'rename'</code> أو القيمة <code>'change'</code>، بينما يمثل الوسيط <code>filename‎</code> اسم الملف الذي أطلَق الحدث. في أغلب منصات التشغيل، يُطلَق الحدث <code>'rename'</code> متى ما ظهر اسم الملف أو اختفى في المجلد. يُربَط رد النداء المستمع مع الحدث <code>'change'</code> الذي يُطلَق عبر <code>fs.FSWatcher‎</code>، ولكن هذا الحدث لا يشبه القيمة <code>'change'</code> الممررة إلى الوسيط <code>eventType‎</code>.
===تحذيرات يجب أخذها بالحسبان===
الواجهة البرمجية <code>fs.watch‎</code> ليست ثابتة 100% عبر جميع المنصات، إذ تكون غير متوافرة في بعض الحالات. الخيار <code>recursive‎</code> مدعومٌ فقط في macOS وويندوز.
====التوافر====
تعتمد هذه الميزة على نظام التشغيل بشكل أساسي الذي يوفر طريقةً للتنبيه بالتغيُّرات التي تحصل في نظام الملفات.
تعتمد هذه الميزة على نظام التشغيل بشكل أساسي الذي يوفر طريقةً للتنبيه بالتغيُّرات التي تحصل في نظام الملفات.
* في أنظمة لينكس، يُستعمَل <code>inotify(7)‎</code>.
*في أنظمة لينكس، يُستعمَل <code>[http://man7.org/linux/man-pages/man7/inotify.7.html inotify(7)‎]</code>.
* في أنظمة BSD، يُستعمَل <code>kqueue(2)‎</code>.
*في أنظمة BSD، يُستعمَل <code>[https://www.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2 kqueue(2)]‎</code>.
* في أنظمة macOS، يُستعمَل <code>kqueue(2)‎</code> للملفات و <code>FSEvents‎</code> للمجلدات.
*في أنظمة macOS، يُستعمَل <code>[https://www.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2 kqueue(2)]‎</code> للملفات و <code>FSEvents‎</code> للمجلدات.
* في أنظمة SunOS (بما فيها Solaris و SmartOS)، يُستعمَل منافذ الحدث (event ports).
*في أنظمة SunOS (بما فيها Solaris و SmartOS)، يُستعمَل [http://illumos.org/man/port_create منافذ الحدث] (event ports).
* في أنظمة ويندوز، تعتمد هذه الميزة على <code>ReadDirectoryChangesW‎</code>.
*في أنظمة ويندوز، تعتمد هذه الميزة على <code>[https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-readdirectorychangesw ReadDirectoryChangesW‎]</code>.
* في أنظمة Aix، تعتمد هذه الميزة على <code>AHAFS‎</code> التي يجب تفعليها.
*في أنظمة Aix، تعتمد هذه الميزة على <code>[https://www.ibm.com/developerworks/aix/library/au-aix_event_infrastructure/ AHAFS‎]</code> التي يجب تفعليها.
الوظيفة الأساسية غير متوافرة لعدة أسباب، لذا لن يستطيع <code>fs.watch‎</code> أن يؤدي وظيفته. على سبيل المثال، يمكن أن تكون عملية مراقبة ملفات أو مجلدات غير جديرة بالثقة، أو مستحيلة في بعض الحالات، في أنظمة ملفات الشكبة (مثل NFS، أو SMB، وغيرها) أو أنظمة ملفات المضيف عند استعمال تطبيقات افتراضية مثل Vagrant، أو Docker وغيرهما.
الوظيفة الأساسية غير متوافرة لعدة أسباب، لذا لن يستطيع <code>fs.watch‎</code> أن يؤدي وظيفته. على سبيل المثال، يمكن أن تكون عملية مراقبة ملفات أو مجلدات غير جديرة بالثقة، أو مستحيلة في بعض الحالات، في أنظمة ملفات الشكبة (مثل NFS، أو SMB، وغيرها) أو أنظمة ملفات المضيف عند استعمال تطبيقات افتراضية مثل Vagrant، أو Docker وغيرهما. لا يزال بالإمكان استعمال <code>[[Node.js/fs#fs.watchFile.28filename.5B.2C options.5D.2C listener.29.E2.80.8E|fs.watchFile()‎]]</code> الذي يستعمل «استطلاع الحالة» (stat polling) إلا أن هذه الطريقة أبطأ وذات وثوقية أقل.
لا يزال بالإمكان استعمال <code>fs.watchFile()‎</code> الذي يستعمل «اسطلاع الحالة» (stat polling) إلا أن هذه الطريقة أبطأ وذات وثوقية أقل.
====مؤشرات الفهرسة (Inodes)====
==== مؤشرات الفهرسة (Inodes) ====
في أنظمة لينكس و macOS، يستبين التابع <code>fs.watch()‎</code> المسار إلى قيمة مؤشر الفهرسة (inode) ويراقب هذا المؤشر. إن حذف المسار الذي يخضع للمراقبة، فسيُسنَد إلى مؤشر فهرسة جديد. سيُطلِق المراقب حدثًا يتعلق بأمر الحذف الذي حصل، ولكنه سيستمر بعملية مراقبة مؤشر الفهرسة الأصلي (original inode). لن تُطلَق أية أحداث لمؤشر الفهرسة الجديد، لذا يجب أن يكون هذا متوقعًا. تحتفظ ملفات AIX بمؤشر الفهرسة نفسه خلال دورة حياة الملف. حفظ وإغلاق ملف مراقب في AIX سيؤدي إلى إطلاق تنبيهين أحدهما من أجل إضافة محتوى جديد والآخر من أجل الاقتطاع (truncation).
في أنظمة لينكس و macOS، يستبين التابع <code>fs.watch()‎</code> المسار إلى قيمة مؤشر الفهرسة (inode) ويراقب هذا المؤشر. إن حذف المسار الذي يخضع للمراقبة، فسيُسنَد إلى مؤشر فهرسة جديد. سيُطلِق المراقب حدثًا يتعلق بأمر الحذف الذي حصل، ولكنه سيستمر بعملية مراقبة مؤشر الفهرسة الأصلي (original inode). لن تُطلَق أية أحداث لمؤشر الفهرسة الجديد، لذا يجب أن يكون هذا متوقعًا.
====الوسيط <code>filename‎</code>====
تحتفظ ملفات AIX بمؤشر الفهرسة نفسه خلال دورة حياة الملف. حفظ وإغلاق ملف مراقب في AIX سيؤدي إلى إطلاق تنبيهين أحدهما من أجل إضافة محتوى جديد والآخر من أجل الاقتطاع (truncation).
تمرير الوسيط <code>filename‎</code> إلى دالة رد النداء مدعومٌ فق لينكس، وويندوز، و macOS، و AIX فقط. حتى في الأنظمة المدعومة، لا يُضمَن أن يُعطَى الوسيط <code>filename‎</code> دومًا؛ نتيجةً لذلك، لا تفترض أن الوسيط <code>filename‎</code> معطًى دومًا في رد النداء، وليكن هنالك احتمالية التراجع المنطقي في الشيفرة إن كانت قيمته <code>null‎</code>.<syntaxhighlight lang="javascript">fs.watch('somedir', (eventType, filename) => {
==== الوسيط <code>filename‎</code> ====
تمرير الوسيط <code>filename‎</code> إلى دالة رد النداء مدعومٌ فق لينكس، وويندوز، و macOS، و AIX فقط. حتى في الأنظمة المدعومة، لا يُضمَن أن يُعطَى الوسيط <code>filename‎</code> دومًا؛ نتيجةً لذلك، لا تفترض أن الوسيط <code>filename‎</code> معطًى دومًا في رد النداء، وليكن هنالك احتمالية التراجع المنطقي في الشيفرة إن كانت قيمته <code>null‎</code>.
<syntaxhighlight lang="javascript">fs.watch('somedir', (eventType, filename) => {
   console.log(`event type is: ${eventType}`);
   console.log(`event type is: ${eventType}`);
   if (filename) {
   if (filename) {
سطر 2٬060: سطر 2٬210:
   }
   }
});
});
</syntaxhighlight>  
</syntaxhighlight>
== <code>fs.watchFile(filename[, options], listener)‎</code> ==
==<code>fs.watchFile(filename[, options], listener)‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
الإصدار
!الإصدار
التغييرات
!التغييرات
v7.6.0
|-
يمكن الآن أن يكون الوسيط <code>filename</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمل البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
|v7.6.0
v0.1.31
|يمكن الآن أن يكون الوسيط <code>filename</code> كائنًا من النوع <code>URL‎</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب.
أضيف هذا التابع.
|-
 
|v0.1.31
* <code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|أضيف هذا التابع.
* <code>options</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Object|<Object>]]
|}
** <code>persistent</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إن كان يجب أن تستمر العملية بالعمل ما دامت عملية مراقبة الملف مستمرة. القيمة الافتراضية هي: <code>true‎</code>.
*<code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
** <code>interval</code>:‏ [[JavaScript/String|<string>]]
*<code>options</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Object|<Object>]]
* <code>listener</code>:‏ [[JavaScript/Function|<Function>]]
**<code>persistent</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إن كان يجب أن تستمر العملية بالعمل ما دامت عملية مراقبة الملف مستمرة. القيمة الافتراضية هي: <code>true‎</code>.
** <code>current</code>:‏ <fs.Stats>
**<code>interval</code>:‏ [[JavaScript/String|<string>]]
** <code>previous</code>:‏ <fs.Stats>
*<code>listener</code>:‏ [[JavaScript/Function|<Function>]]
يراقب هذا التابع التغيرات التي تحصل على <code>filename‎</code>. سيُستدعى رد النداء <code>listener‎</code> في كل مرة يتم فيها الوصول إلى الملف.
**<code>current</code>:‏ <fs.Stats>
يمكن عدم تمرير الوسيط <code>options‎</code>. إن أعطي، فيجب أن يكون كائنًا. قد يحوي الكائن <code>options‎</code> قيمة منطقية تدعى <code>persistent‎</code> تحدِّد إن كان يجب أن تستمر العملية بالعمل ما دامت عملية مراقبة الملف مستمرة. قد يحدِّد الكائن <code>options‎</code> الخاصية <code>interval‎</code> التي تشير إلى عدد المرات التي يجب فيها أن يُستطلَع الهدف بالميلي ثانية.
**<code>previous</code>:‏ <fs.Stats>
يمرَّر إلى رد النداء <code>listener‎</code> وسيطان هما الكائن <code>fs.Stats‎</code> الذي يمثل الحالة الحالية، والكائن <code>fs.Stats‎</code> الذي يمثل الحالة السابقة.
يراقب هذا التابع التغيرات التي تحصل على <code>filename‎</code>. سيُستدعى رد النداء <code>listener‎</code> في كل مرة يتم فيها الوصول إلى الملف. يمكن عدم تمرير الوسيط <code>options‎</code>. إن أعطي، فيجب أن يكون كائنًا. قد يحوي الكائن <code>options‎</code> قيمة منطقية تدعى <code>persistent‎</code> تحدِّد إن كان يجب أن تستمر العملية بالعمل ما دامت عملية مراقبة الملف مستمرة. قد يحدِّد الكائن <code>options‎</code> الخاصية <code>interval‎</code> التي تشير إلى عدد المرات التي يجب فيها أن يُستطلَع الهدف بالميلي ثانية. يمرَّر إلى رد النداء <code>listener‎</code> وسيطان هما الكائن <code>fs.Stats‎</code> الذي يمثل الحالة الحالية، والكائن <code>fs.Stats‎</code> الذي يمثل الحالة السابقة.<syntaxhighlight lang="javascript">fs.watchFile('message.text', (curr, prev) => {
<syntaxhighlight lang="javascript">fs.watchFile('message.text', (curr, prev) => {
   console.log(`the current mtime is: ${curr.mtime}`);
   console.log(`the current mtime is: ${curr.mtime}`);
   console.log(`the previous mtime was: ${prev.mtime}`);
   console.log(`the previous mtime was: ${prev.mtime}`);
});
});
</syntaxhighlight>
</syntaxhighlight>إنَّ كلًا من كائني الحالة هذين هو نسخةٌ من <code>fs.Stat‎</code>. للحصول على تنبيهات عند تعديل الملف وليس عند الوصول إليه، إنَّه من الضروري الموازنة بين <code>curr.mtime‎</code> و <code>prev.mtime‎</code>. عندما تصادف عملية مراقبة ملف باستعمال التابع <code>fs.watchFile()‎</code> الخطأ <code>ENOENT‎</code>، سيستدعي التابع آنذاك رد النداء <code>listener‎</code> مرة واحدة مع تصفير جميع الحقول للكائنين الممرَّرين إليه (أو ضبطها إلى تاريخ البداية في يونكس بالنسبة للتواريخ). في ويندوز، ستكون قيمة الحقلين <code>blksize‎</code> و <code>blocks‎</code> هي ‎<code>undefined‎</code> بدلًا من الصفر. إن أنشئ الملف في وقت لاحق، فسيُستدعَى رد النداء <code>listener‎</code> مجدَّدًا مع تمرير الكائنين الذين يحويان أحدث معلومات عن الحالة (stat). أصبح هذا التغير في سلوك التابع معتمدًا بدءًا من الإصدار v0.10. يعدُّ استعمال التابع <code>fs.watch()‎</code> أكثر فاعليةً من استعمال <code>fs.watchFile()‎</code>، و <code>[[Node.js/fs#fs.unwatchFile.28filename.5B.2C listener.5D.29.E2.80.8E|fs.unwatchFile()‎]]</code>. يجب أن يُستعمَل  التابع <code>[[Node.js/fs#fs.watch.28filename.5B.2C options.5D.5B.2C listener.5D.29.E2.80.8E|fs.watch()‎]]</code> بدلًا من التابع <code>fs.watchFile()‎</code>، و <code>[[Node.js/fs#fs.unwatchFile.28filename.5B.2C listener.5D.29.E2.80.8E|fs.unwatchFile()‎]]</code> ما أمكن ذلك. عندما يختفي ملفٌ يخضع للمراقبة عبر <code>fs.watchFile()‎</code> ويظهر مجدَّدًا، ستكون حينئذٍ الحالة السابقة (previousStat) المُبلَّغ عنها في الحدث الثاني لرد النداء (إعادة ظهور الملف) نفس الحالة السابقة للحدث الأول لرد النداء (اختفاء الملف). هذا يحدث عندما:
إنَّ كلًا من كائني الحالة هذين هو نسخةٌ من <code>fs.Stat‎</code>.
*يُحذَف الملف ثم يُتبَع بتنفيذ عملية استعادة له، أو
للحصول على تنبيهات عند تعديل الملف وليس عند الوصول إليه، إنَّه من الضروري الموازنة بين <code>curr.mtime‎</code> و <code>prev.mtime‎</code>.
*يعاد تسمية الملف مرتين، إذ يعاد تسمية الملف في المرة الثانية إلى اسمه الأصلي.
عندما تصادف عملية مراقبة ملف باستعمال التابع <code>fs.watchFile()‎</code> الخطأ <code>ENOENT‎</code>، سيستدعي التابع آنذاك رد النداء <code>listener‎</code> مرة واحدة مع تصفير جميع الحقول للكائنين الممرَّرين إليه (أو ضبطها إلى تاريخ البداية في يونكس بالنسبة للتواريخ). في ويندوز، ستكون قيمة الحقلين <code>blksize‎</code> و <code>blocks‎</code> هي ‎<code>undefined‎</code> بدلًا من الصفر. إن أنشئ الملف في وقت لاحق، فسيُستدعَى رد النداء <code>listener‎</code> مجدَّدًا مع تمرير الكائنين الذين يحويان أحدث معلومات عن الحالة (stat). أصبح هذا التغير في سلوك التابع معتمدًا بدءًا من الإصدار v0.10.
==<code>fs.write(fd, buffer[, offset[, length[, position]]], callback)‎</code>==
يعدُّ استعمال التابع <code>fs.watch()‎</code> أكثر فاعليةً من استعمال <code>fs.watchFile()‎</code>، و <code>fs.unwatchFile()‎</code>. يجب أن يُستعمَل  التابع <code>fs.watch()‎</code> بدلًا من التابع <code>fs.watchFile()‎</code>، و <code>fs.unwatchFile()‎</code> ما أمكن ذلك.
{| class="wikitable mw-collapsible"
عندما يختفي ملفٌ يخضع للمراقبة عبر <code>fs.watchFile()‎</code> ويظهر مجدَّدًا، ستكون حينئذٍ الحالة السابقة (previousStat) المُبلَّغ عنها في الحدث الثاني لرد النداء (إعادة ظهور الملف) نفس الحالة السابقة للحدث الأول لرد النداء (اختفاء الملف).
|+سجل التغييرات
هذا يحدث عندما:
!الإصدار
* يحذف الملف ثم يُتبَع بتنفيذ عملية استعادة له، أو
!التغييرات
* يعاد تسمية الملف مرتين، إذ يعاد تسمية الملف في المرة الثانية إلى اسمه الأصلي.
|-
== <code>fs.write(fd, buffer[, offset[, length[, position]]], callback)‎</code> ==
|v10.10.0
سجل التغييرات
|يمكن أن يكون المعامل <code>buffer</code> الآن كائنًا من النوع <code>TypeError‎</code> أو النوع <code>DataView‎</code>.
 
|-
الإصدار
|v10.0.0
التغييرات
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v10.10.0
|-
يمكن أن يكون المعامل <code>buffer</code> الآن كائنًا من النوع <code>TypeError‎</code> أو النوع <code>DataView‎</code>.
|v7.4.0
v10.0.0
|يمكن الآن أن يكون المعامل <code>buffer‎</code> كائنًا من النوع <code>Uint8Array</code>.
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
v7.4.0
|v7.2.0
يمكن الآن أن يكون المعامل <code>buffer‎</code> كائنًا من النوع <code>Uint8Array</code>.
|أصبح تمرير المعاملين <code>offset‎</code> و <code>length‎</code> اختياريًّا الآن.
v7.2.0
|-
أصبح تمرير المعاملين <code>offset‎</code> و <code>length‎</code> اختياريًّا الآن.
|v7.0.0
v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
v0.0.2
|v0.0.2
أضيف هذا التابع.
|أضيف هذا التابع.
 
|}
* <code>fd</code>:‏‏ [[JavaScript/Number|<integer>]]‏
*<code>fd</code>:‏‏ [[JavaScript/Number|<integer>]]‏
* <code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]] يمثِّل جزءًا من ذاكرة التخزين المؤقتة التي ستُقرَأ منها البيانات المراد كتابتها في الملف.
*<code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]] يمثِّل جزءًا من ذاكرة التخزين المؤقتة التي ستُقرَأ منها البيانات المراد كتابتها في الملف.
* <code>offset</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد جزء البيانات من ذاكرة التخزين المؤقتة <code>buffer‎</code> المراد كتابته.
*<code>offset</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد جزء البيانات من ذاكرة التخزين المؤقتة <code>buffer‎</code> المراد كتابته.
* <code>length</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد كتابتها في الملف.
*<code>length</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد كتابتها في الملف.
* <code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان <code>typeof position !== 'number'</code>، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة <code>pwrite(2)‎</code>.
*<code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان <code>typeof position !=='number'</code>، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة <code>pwrite(2)‎</code>.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
** <code>bytesWritten</code>:‏ [[JavaScript/Number|<integer>]]
**<code>bytesWritten</code>:‏ [[JavaScript/Number|<integer>]]
** <code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]]
**<code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]]
يكتب هذا التابع البيانات المحددة في الذاكرة <code>buffer‎</code> في الملف ذي الواصف <code>fd‎</code> المعطى.
يكتب هذا التابع البيانات المحددة في الذاكرة <code>buffer‎</code> في الملف ذي الواصف <code>fd‎</code> المعطى. تأخذ دالة رد النداء ثلاثة وسائط هي: <code>err‎</code> و <code>bytesWritten</code> و <code>buffer‎</code>، إذ يحدد <code>bytesWritten‎</code> عدد البايتات التي كُتبَت من <code>buffer‎</code>. إن استدعي هذا التابع مثل نظيره <code>util.promisify()‎</code>، فسيُعيد كائنًا من النوع <code>Promise‎</code> لكائن <code>Object‎</code> مع الخاصيتين <code>bytesWritten</code> و <code>buffer</code>. إنه من غير الآمن استدعاء التابع <code>fs.write()‎</code> عدة مرات مع نفس الملف دون انتظار رد النداء. في مثل هذه الحالة، يُنصَح باستعمال التابع <code>[[Node.js/fs#fs.createWriteStream.28path.5B.2C options.5D.29.E2.80.8E|fs.createWriteStream()‎]]</code>. في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط <code>position‎</code> وستضيف البيانات إلى نهاية الملف دومًا.
تأخذ دالة رد النداء ثلاثة وسائط هي: <code>err‎</code> و <code>bytesWritten</code> و <code>buffer‎</code>، إذ يحدد <code>bytesWritten‎</code> عدد البايتات التي كُتبَت من <code>buffer‎</code>.
==<code>fs.write(fd, string[, position[, encoding]], callback)‎</code>==
إن استدعي هذا التابع مثل نظيره <code>util.promisify()‎</code>، فسيُعيد كائنًا من النوع <code>Promise‎</code> لكائن <code>Object‎</code> مع الخاصيتين <code>bytesWritten</code> و <code>buffer<code>.
{| class="wikitable mw-collapsible"
إنه من غير الآمن استدعاء التابع <code>fs.write()‎</code> عدة مرات مع نفس الملف دون انتظار رد النداء. في مثل هذه الحالة، يُنصَح باستعمال التابع <code>fs.createWriteStream()‎</code>.
|+سجل التغييرات
في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط <code>position‎</code> وستضيف البيانات إلى نهاية الملف دومًا.
!الإصدار
== <code>fs.write(fd, string[, position[, encoding]], callback)‎</code> ==
!التغييرات
سجل التغييرات
|-
 
|v10.0.0
 
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
الإصدار
|-
التغييرات
|v7.2.0
v10.0.0
|أصبح تمرير المعامل <code>position</code> اختياريًّا الآن.
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|-
v7.2.0
|v7.0.0
أصبح تمرير المعامل <code>position</code> اختياريًّا الآن.
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v7.0.0
|-
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|v0.11.5
v0.11.5
|أضيف هذا التابع.
أضيف هذا التابع.
|}
 
*<code>fd</code>:‏‏ [[JavaScript/Number|<integer>]]‏
* <code>fd</code>:‏‏ [[JavaScript/Number|<integer>]]‏
*<code>string</code>:‏ [[JavaScript/String|<string>]]‏ سلسلة نصية تحوي البيانات المراد كتابتها في الملف.
* <code>string</code>:‏ [[JavaScript/String|<string>]]‏ سلسلة نصية تحوي البيانات المراد كتابتها في الملف.
*<code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان <code>typeof position !== 'number'</code>، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة <code>[http://man7.org/linux/man-pages/man2/pwrite.2.html pwrite(2)]‎</code>.
* <code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان <code>typeof position !== 'number'</code>، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة <code>pwrite(2)‎</code>.
*<code>encoding</code>:‏‏ [[JavaScript/String|<string>]]‏ يمثِّل الترميز المتوقع للسلسلة النصية. القيمة الافتراضية هي: <code>'utf8'</code>.
* <code>encoding</code>:‏‏ [[JavaScript/String|<string>]]‏ يمثِّل الترميز المتوقع للسلسلة النصية. القيمة الافتراضية هي: <code>'utf8'</code>.
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
**<code>written</code>:‏ [[JavaScript/Number|<integer>]]
** <code>written</code>:‏ [[JavaScript/Number|<integer>]]
**<code>string</code>:‏ [[JavaScript/String|<string>]]‏
** <code>string</code>:‏ [[JavaScript/String|<string>]]‏
يكتب هذا التابع البيانات الموجودة في السلسلة النصية <code>string</code> في الملف ذي الواصف <code>fd‎</code> المعطى بشكل غير متزامن. إن لم يكون الوسيط <code>string‎</code> سلسلةً نصيةً، فستُحوَّل حينئذٍ القيمة رغمًا عنها إلى الواحد. تأخذ دالة رد النداء ثلاثة وسائط هي: <code>err‎</code> و <code>written</code> و <code>string</code>، إذ يحدد <code>written</code> عدد بايتات السلسلة النصية المعطاة المطلوب كتابتها في الملف. لا يُشترَط أن تكون البايتات المكتوبة في الملف هي نفسها المحارف المعطاة في السلسلة النصية. اطلع على توثيق التابع <code>[[Node.js/buffer#Buffer.byteLength.28string.5B.2C encoding.5D.29.E2.80.8E|Buffer.byteLength()‎]]</code>. إنه من غير الآمن استدعاء التابع <code>fs.write()‎</code> عدة مرات مع نفس الملف دون انتظار رد النداء. في مثل هذه الحالة، يُنصَح باستعمال التابع <code>[[Node.js/fs#fs.createWriteStream.28path.5B.2C options.5D.29.E2.80.8E|fs.createWriteStream()]]</code>. في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط <code>position‎</code> وستضيف البيانات إلى نهاية الملف دومًا.
يكتب هذا التابع البيانات الموجودة في السلسلة النصية <code>string</code> في الملف ذي الواصف <code>fd‎</code> المعطى بشكل غير متزامن. إن لم يكون الوسيط <code>string‎</code> سلسلةً نصيةً، فستُحوَّل حينئذٍ القيمة رغمًا عنها إلى الواحد.
==<code>fs.writeFile(file, data[, options], callback)‎</code>==
تأخذ دالة رد النداء ثلاثة وسائط هي: <code>err‎</code> و <code>written</code> و <code>string</code>، إذ يحدد <code>written</code> عدد بايتات السلسلة النصية المعطاة المطلوب كتابتها في الملف. لا يُشترَط أن تكون البايتات المكتوبة في الملف هي نفسها المحارف المعطاة في السلسلة النصية. اطلع على توثيق التابع <code>Buffer.byteLength()‎</code>.
{| class="wikitable mw-collapsible"
إنه من غير الآمن استدعاء التابع <code>fs.write()‎</code> عدة مرات مع نفس الملف دون انتظار رد النداء. في مثل هذه الحالة، يُنصَح باستعمال التابع <code>fs.createWriteStream()‎</code>.
|+سجل التغييرات
في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط <code>position‎</code> وستضيف البيانات إلى نهاية الملف دومًا.
!الإصدار
== <code>fs.writeFile(file, data[, options], callback)‎</code> ==
!التغييرات
سجل التغييرات
|-
 
|v10.10.0
 
|يمكن أن يكون المعامل <code>data</code> الآن كائنًا من النوع <code>TypeError‎</code> أو النوع <code>DataView</code>.
الإصدار
|-
التغييرات
|v10.0.0
v10.10.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
يمكن أن يكون المعامل <code>data</code> الآن كائنًا من النوع <code>TypeError‎</code> أو النوع <code>DataView‎</code>.
|-
v10.0.0
|v7.4.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
|يمكن أن يكون المعامل <code>data</code> كائنًا من النوع <code>Uint8Array‎</code>.
v7.4.0
|-
يمكن أن يكون المعامل <code>data</code> كائنًا من النوع <code>Uint8Array‎</code>.
|v7.0.0
v7.0.0
|لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|-
v5.0.0
|v5.0.0
يمكن أن يكون المعامل <code>file‎</code> واصف ملفٍ الآن.
|يمكن أن يكون المعامل <code>file‎</code> واصف ملفٍ الآن.
v0.1.29
|-
أضيف هذا التابع.
|v0.1.29
 
|أضيف هذا التابع.
* <code>file</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<integer>]] اسم أو واصف الملف.
|}
* <code>data</code>:‏ [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[JavaScript/TypedArray|<TypedArray>]] | [[JavaScript/DataView|<DataView>]]
*<code>file</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<integer>]] اسم أو واصف الملف.
* <code>options</code>:‏ [[JavaScript/Object|<Object>]] | [[JavaScript/String|<string>]]
*<code>data</code>:‏ [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[JavaScript/TypedArray|<TypedArray>]] | [[JavaScript/DataView|<DataView>]]
** <code>encoding</code>:‏‏ [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
*<code>options</code>:‏ [[JavaScript/Object|<Object>]] | [[JavaScript/String|<string>]]
** <code>mod</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
**<code>encoding</code>:‏‏ [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
** <code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'w'</code>.
**<code>mod</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
* <code>callback</code>:‏ [[JavaScript/Function|<Function>]]
**<code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'w'</code>.
** <code>err</code>:‏ [[JavaScript/Error|<Error>]]
*<code>callback</code>:‏ [[JavaScript/Function|<Function>]]
يكتب هذا التابع البيانات الموجودة في الوسيط <code>data</code> في الملف <code>file</code> المعطى بشكل غير متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يمكن أن يكون الوسيط <code>data‎</code> سلسلةً نصيةً أو مخزنًا مؤقتًا في الذاكرة (buffer).
**<code>err</code>:‏ [[JavaScript/Error|<Error>]]
سيُتجاهَل الخيار <code>encoding‎</code> إن كان الوسيط <code>data‎</code> مخزنًا مؤقتًا.
يكتب هذا التابع البيانات الموجودة في الوسيط <code>data</code> في الملف <code>file</code> المعطى بشكل غير متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يمكن أن يكون الوسيط <code>data‎</code> سلسلةً نصيةً أو مخزنًا مؤقتًا في الذاكرة (buffer). سيُتجاهَل الخيار <code>encoding‎</code> إن كان الوسيط <code>data‎</code> مخزنًا مؤقتًا.<syntaxhighlight lang="javascript">const data = new Uint8Array(Buffer.from('Hello Node.js'));
<syntaxhighlight lang="javascript">const data = new Uint8Array(Buffer.from('Hello Node.js'));
fs.writeFile('message.txt', data, (err) => {
fs.writeFile('message.txt', data, (err) => {
   if (err) throw err;
   if (err) throw err;
   console.log('The file has been saved!');
   console.log('The file has been saved!');
});
});
</syntaxhighlight>
</syntaxhighlight>إن كان الوسيط <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز:<syntaxhighlight lang="javascript">fs.writeFile('message.txt', 'Hello Node.js', 'utf8', callback);
إن كان الوسيط <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز:
</syntaxhighlight>يجب على واصف الملف المعطى أن يدعم عملية الكتابة على الملف. إنه من غير الآمن استدعاء التابع <code>fs.writeFile()‎</code> عدة مرات مع نفس الملف دون انتظار رد النداء. في مثل هذه الحالة، يُنصَح باستعمال التابع <code>[[Node.js/fs#fs.createWriteStream.28path.5B.2C options.5D.29.E2.80.8E|fs.createWriteStream()‎]]</code>. إن أعطي واصف ملف للوسيط <code>file‎</code>، فلن يُغلَق الملف تلقائيًّا.
<syntaxhighlight lang="javascript">fs.writeFile('message.txt', 'Hello Node.js', 'utf8', callback);
==<code>fs.writeFileSync(file, data[, options])‎</code>==
</syntaxhighlight>
{| class="wikitable mw-collapsible"
يجب على واصف الملف المعطى أن يدعم عملية الكتابة على الملف.
|+سجل التغييرات
إنه من غير الآمن استدعاء التابع <code>fs.writeFile()‎</code> عدة مرات مع نفس الملف دون انتظار رد النداء. في مثل هذه الحالة، يُنصَح باستعمال التابع <code>fs.createWriteStream()‎</code>.
!الإصدار
إن أعطي واصف ملف للوسيط <code>file‎</code>، فلن يُغلَق الملف تلقائيًّا.
!التغييرات
== <code>fs.writeFileSync(file, data[, options])‎</code> ==
|-
سجل التغييرات
|v10.10.0
 
|يمكن أن يكون المعامل <code>data</code> الآن كائنًا من النوع <code>TypeError‎</code> أو النوع <code>DataView‎</code>.
 
|-
الإصدار
|v7.4.0
التغييرات
|يمكن أن يكون المعامل <code>data</code> كائنًا من النوع <code>Uint8Array‎</code>.
v10.10.0
|-
يمكن أن يكون المعامل <code>data</code> الآن كائنًا من النوع <code>TypeError‎</code> أو النوع <code>DataView‎</code>.
|v5.0.0
v7.4.0
|يمكن أن يكون المعامل <code>file‎</code> واصف ملفٍ الآن.
يمكن أن يكون المعامل <code>data</code> كائنًا من النوع <code>Uint8Array‎</code>.
|-
v5.0.0
|v0.1.29
يمكن أن يكون المعامل <code>file‎</code> واصف ملفٍ الآن.
|أضيف هذا التابع.
v0.1.29
|}
أضيف هذا التابع.
*<code>file</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<integer>]] اسم أو واصف الملف.
 
*<code>data</code>:‏ [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[JavaScript/TypedArray|<TypedArray>]] | [[JavaScript/DataView|<DataView>]]
* <code>file</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<integer>]] اسم أو واصف الملف.
*<code>options</code>:‏ [[JavaScript/Object|<Object>]] | [[JavaScript/String|<string>]]
* <code>data</code>:‏ [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[JavaScript/TypedArray|<TypedArray>]] | [[JavaScript/DataView|<DataView>]]
**<code>encoding</code>:‏‏ [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
* <code>options</code>:‏ [[JavaScript/Object|<Object>]] | [[JavaScript/String|<string>]]
**<code>mod</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
** <code>encoding</code>:‏‏ [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
**<code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'w'</code>.
** <code>mod</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
يكتب هذا التابع البيانات الموجودة في الوسيط <code>data</code> في الملف <code>file</code> المعطى بشكل متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يعيد هذا التابع القيمة <code>undefined‎</code>. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار المتزامن من هذا التابع الذي هو <code>[[Node.js/fs#fs.writeFile.28file.2C data.5B.2C options.5D.2C callback.29.E2.80.8E|fs.writeFile()‎]]</code>.
** <code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'w'‎</code>.
==<code>fs.writeSync(fd, buffer[, offset[, length[, position]]])‎</code>==
يكتب هذا التابع البيانات الموجودة في الوسيط <code>data</code> في الملف <code>file</code> المعطى بشكل متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يعيد هذا التابع القيمة <code>undefined‎</code>.
{| class="wikitable mw-collapsible"
لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار المتزامن من هذا التابع الذي هو <code>fs.writeFile()‎</code>.
|+سجل التغييرات
== <code>fs.writeSync(fd, buffer[, offset[, length[, position]]])‎</code> ==
!الإصدار
سجل التغييرات
!التغييرات
 
|-
الإصدار
|v10.10.0
التغييرات
|يمكن أن يكون المعامل <code>buffer</code> الآن كائنًا من النوع <code>TypeError‎</code> أو النوع <code>DataView‎</code>.
v10.10.0
|-
يمكن أن يكون المعامل <code>buffer</code> الآن كائنًا من النوع <code>TypeError‎</code> أو النوع <code>DataView‎</code>.
|v7.4.0
v7.4.0
|يمكن الآن أن يكون المعامل <code>buffer‎</code> كائنًا من النوع <code>Uint8Array</code>.
يمكن الآن أن يكون المعامل <code>buffer‎</code> كائنًا من النوع <code>Uint8Array</code>.
|-
v7.2.0
|v7.2.0
أصبح تمرير المعاملين <code>offset‎</code> و <code>length‎</code> اختياريًّا الآن.
|أصبح تمرير المعاملين <code>offset‎</code> و <code>length‎</code> اختياريًّا الآن.
v0.1.21
|-
أضيف هذا التابع.
|v0.1.21
 
|أضيف هذا التابع.
* <code>fd</code>:‏‏ [[JavaScript/Number|<integer>]]
|}
* <code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]] يمثِّل جزءًا من ذاكرة التخزين المؤقتة التي ستُقرَأ منها البيانات المراد كتابتها في الملف.
*<code>fd</code>:‏‏ [[JavaScript/Number|<integer>]]
* <code>offset</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد جزء البيانات من ذاكرة التخزين المؤقتة <code>buffer‎</code> المراد كتابته.
*<code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]] يمثِّل جزءًا من ذاكرة التخزين المؤقتة التي ستُقرَأ منها البيانات المراد كتابتها في الملف.
* <code>length</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد كتابتها في الملف.
*<code>offset</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد جزء البيانات من ذاكرة التخزين المؤقتة <code>buffer‎</code> المراد كتابته.
* <code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان <code>typeof position !== 'number'</code>، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة <code>pwrite(2)‎</code>.
*<code>length</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد كتابتها في الملف.
* القيم المعادة: [[JavaScript/Number|<number>]] عدد البايتات التي كُتبَت.
*<code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان <code>typeof position !== 'number'‎</code>، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة <code>[http://man7.org/linux/man-pages/man2/pwrite.2.html pwrite(2)]‎</code>.
يكتب هذا التابع البيانات المحددة في الذاكرة <code>buffer‎</code> في الملف ذي الواصف <code>fd‎</code> المعطى بشكل متزامن.
*القيم المعادة: [[JavaScript/Number|<number>]] عدد البايتات التي كُتبَت.
لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار المتزامن من هذا التابع الذي هو <code>fs.write(fd, buffer...)‎</code>.
يكتب هذا التابع البيانات المحددة في الذاكرة <code>buffer‎</code> في الملف ذي الواصف <code>fd‎</code> المعطى بشكل متزامن. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار المتزامن من هذا التابع الذي هو <code>[[Node.js/fs#fs.write.28fd.2C buffer.5B.2C offset.5B.2C length.5B.2C position.5D.5D.5D.2C callback.29.E2.80.8E|fs.write(fd, buffer...)]]‎</code>.
== <code>fs.writeSync(fd, string[, position[, encoding]])‎</code> ==
==<code>fs.writeSync(fd, string[, position[, encoding]])‎</code>==
سجل التغييرات
{| class="wikitable mw-collapsible"
 
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v7.2.0
|أصبح تمرير المعامل <code>position</code> اختياريًّا الآن.
|-
|v0.11.5
|أضيف هذا التابع.
|}
*<code>fd</code>:‏‏ [[JavaScript/Number|<integer>]]‏
*<code>string</code>:‏ [[JavaScript/String|<string>]]‏ سلسلة نصية تحوي البيانات المراد كتابتها في الملف.
*<code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان <code>typeof position !== 'number'‎</code>، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة <code>[http://man7.org/linux/man-pages/man2/pwrite.2.html pwrite(2)]‎</code>.
*<code>encoding</code>:‏‏ [[JavaScript/String|<string>]]‏ يمثِّل الترميز المتوقع للسلسلة النصية. القيمة الافتراضية هي: <code>'utf8'</code>.
القيم المعادة: [[JavaScript/Number|<number>]] عدد البايتات التي كُتبَت. يكتب هذا التابع البيانات الموجودة في السلسلة النصية <code>string</code> في الملف ذي الواصف <code>fd‎</code> المعطى بشكل متزامن. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار المتزامن من هذا التابع الذي هو <code>[[Node.js/fs#fs.write.28fd.2C string.5B.2C position.5B.2C encoding.5D.5D.2C callback.29.E2.80.8E|fs.write(fd, string...)]]‎</code>.
==واجهة الوعود (Promises) البرمجية في الوحدة <code>fs‎</code>==
الاستقرار: 1 - قيد التجريب.


الإصدار
التغييرات
v7.2.0
أصبح تمرير المعامل <code>position</code> اختياريًّا الآن.
v0.11.5
أضيف هذا التابع.
* <code>fd</code>:‏‏ [[JavaScript/Number|<integer>]]‏
* <code>string</code>:‏ [[JavaScript/String|<string>]]‏ سلسلة نصية تحوي البيانات المراد كتابتها في الملف.
* <code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان <code>typeof position !== 'number'</code>، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة <code>pwrite(2)‎</code>.
* <code>encoding</code>:‏‏ [[JavaScript/String|<string>]]‏ يمثِّل الترميز المتوقع للسلسلة النصية. القيمة الافتراضية هي: <code>'utf8'‎</code>.
القيم المعادة: [[JavaScript/Number|<number>]] عدد البايتات التي كُتبَت.
يكتب هذا التابع البيانات الموجودة في السلسلة النصية <code>string</code> في الملف ذي الواصف <code>fd‎</code> المعطى بشكل متزامن.
لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار المتزامن من هذا التابع الذي هو <code>fs.write(fd, string...)‎</code>.
== واجهة الوعود (Promises) البرمجية في الوحدة <code>fs‎</code> ==
الاستقرار: 1 - قيد التجريب.
توفِّر الواجهة البرمجية <code>fs.promises‎</code> مجموعةً بديلةً لتوابع نظام الملفات الغير متزامنة تعيد الكائن <code>Promise‎</code> بدلًا من استعمال رد النداء. يمكن الوصول إلى هذه الواجهة البرمجية عبر <code>require('fs').promises‎</code>.
توفِّر الواجهة البرمجية <code>fs.promises‎</code> مجموعةً بديلةً لتوابع نظام الملفات الغير متزامنة تعيد الكائن <code>Promise‎</code> بدلًا من استعمال رد النداء. يمكن الوصول إلى هذه الواجهة البرمجية عبر <code>require('fs').promises‎</code>.
=== الصنف <code>FileHandle‎</code> ===
===الصنف <code>FileHandle‎</code>===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
الكائن <code>FileHandle‎</code> هو مغلفٌ لواصف ملفٍ عدديٍّ. تختلف النسخ المنشأة من <code>FileHandle‎</code> عن واصفات الملفات العددية، إذ إن لم يُغلَق الكائن <code>FileHandle‎</code> مثلًا بشكل صريح عبر استعمال التابع <code>filehandle.close()‎</code>، فسيُغلَق واصف الملف تلقائيًّا وسيُصدَر تحذير بالعملية. هذا يساعد في منع حدوث تسريبٍ في الذاكرة.
 
تُنشَأ نسخٌ من الصنف <code>FileHandle‎</code> ضمنيًّا عبر التابع <code>fsPromises.open()‎</code>.
الكائن <code>FileHandle‎</code> هو مغلفٌ لواصف ملفٍ عدديٍّ. تختلف النسخ المنشأة من <code>FileHandle‎</code> عن واصفات الملفات العددية، إذ إن لم يُغلَق الكائن <code>FileHandle‎</code> مثلًا بشكل صريح عبر استعمال التابع <code>[[Node.js/fs#.E2.80.8Efilehandle.close.28.29|filehandle.close()‎]]</code>، فسيُغلَق واصف الملف تلقائيًّا وسيُصدَر تحذير بالعملية. هذا يساعد في منع حدوث تسريبٍ في الذاكرة. تُنشَأ نسخٌ من الصنف <code>FileHandle‎</code> ضمنيًّا عبر التابع <code>[[Node.js/fs#fsPromises.open.28path.2C flags.5B.2C mode.5D.29|fsPromises.open()]]‎</code>. لا يُستعمَل واصف ملف عددي عبر الواجهات البرمجية التي تعتمد على الوعود خلافًا للواجهات البرمجية التي تعتمد على ردود النداء (مثل <code>[[Node.js/fs#fs.fstat.28fd.5B.2C options.5D.2C callback.29.E2.80.8E|fs.fstat()‎]]</code>، و <code>[[Node.js/fs#fs.fchown.28fd.2C uid.2C gid.2C callback.29.E2.80.8E|fs.fchown()‎]]</code>، و <code>[[Node.js/fs#fs.fchmod.28fd.2C mode.2C callback.29.E2.80.8E|fs.fchmod()‎]]</code>، ...إلخ.). عوضًا عن ذلك، الواجهات البرمجية التي تعتمد على الوعود تستعمل الصنف <code>FileHandle‎</code> لتجنب حدوث تسريب في واصفات الملفات غير المغلقة بشكل غير مقصود بعد أن يُقبَل الكائن <code>[[JavaScript/Promise|Promise‎]]</code> أو يُرفَض.
لا يُستعمَل واصف ملف عددي عبر الواجهات البرمجية التي تعتمد على الوعود خلافًا للواجهات البرمجية التي تعتمد على ردود النداء (مثل <code>fs.fstat()‎</code>، و <code>fs.fchown()‎</code>، و <code>fs.fchmod()‎</code>، ...إلخ.). عوضًا عن ذلك، الواجهات البرمجية التي تعتمد على الوعود تستعمل الصنف <code>FileHandle‎</code> لتجنب حدوث تسريب في واصفات الملفات غير المغلقة بشكل غير مقصود بعد أن يُقبَل الكائن <code>Promise‎</code> أو يُرفَض.
====<code>‎filehandle.appendFile(data, options)</code>====
==== <code>‎filehandle.appendFile(data, options)</code> ====
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>data</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
*<code>data</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]
* <code>options</code>:‏‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
*<code>options</code>:‏‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
** <code>encoding</code>:‏‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
**<code>encoding</code>:‏‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
** <code>mode</code>:‏‏ [[JavaScript/Number|<integer>]]‏ القيمة الافتراضية هي: <code>0o666‎</code>.
**<code>mode</code>:‏‏ [[JavaScript/Number|<integer>]]‏ القيمة الافتراضية هي: <code>0o666‎</code>.
** <code>flag</code>:‏‏ [[JavaScript/String|<string>]] اطلع على القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'a'</code>.
**<code>flag</code>:‏‏ [[JavaScript/String|<string>]] اطلع على القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'a'</code>.
* القيم المعادة: <Promise>
*القيم المعادة: [[JavaScript/Promise|<Promise>]]
يضيف هذا التابع بيانات إلى هذا الملف، أو يُنشئ ملفًا إن لم يكن الملف موجودًا بعد. يمكن أن يكون الوسيط <code>data‎</code> سلسلة نصية أو مخزنًا مؤقتًا في الذاكرة (buffer). يُقبَل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
يضيف هذا التابع بيانات إلى هذا الملف، أو يُنشئ ملفًا إن لم يكن الملف موجودًا بعد. يمكن أن يكون الوسيط <code>data‎</code> سلسلة نصية أو مخزنًا مؤقتًا في الذاكرة (buffer). يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية. إن كان الوسيط <code>options‎</code> سلسلة نصية، فسيُحدِّد حينئذٍ الترميز. يجب أن يكون مقبض الملف <code>FileHandle‎</code> مفتوحًا في وضع الإضافة (appending mode).
إن كان الوسيط <code>options‎</code> سلسلة نصية، فسيُحدِّد حينئذٍ الترميز.
====<code>filehandle.chmod(mode)‎</code>====
يجب أن يكون مقبض الملف <code>FileHandle‎</code> مفتوحًا في وضع الإضافة (appending mode).
==== <code>filehandle.chmod(mode)‎</code> ====
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>mode</code>:‏‏ [[JavaScript/Number|<integer>]]
*<code>mode</code>:‏‏ [[JavaScript/Number|<integer>]]
* القيم المعادة: <Promise>
*القيم المعادة: [[JavaScript/Promise|<Promise>]]
يعدِّل هذا التابع أذونات الملف. يُقبَل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
يعدِّل هذا التابع أذونات الملف. يُقبَل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
==== <code>filehandle.chown(uid, gid)‎</code> ====
====<code>filehandle.chown(uid, gid)‎</code>====
أضيف في الإصدار: v10.0.0.
* <code>uid</code>:‏‏ [[JavaScript/Number|<integer>]]
* <code>gid</code>:‏‏ [[JavaScript/Number|<integer>]]
* القيم المعادة:‏‏ <Promise>
 
==== <code>‎</code> ====
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* القيم المعادة:‏‏ <Promise>
*<code>uid</code>:‏‏ [[JavaScript/Number|<integer>]]
يغيِّر هذا التابع المستخدم المالك للملف ثم سيُقبَل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
*<code>gid</code>:‏‏ [[JavaScript/Number|<integer>]]
==== <code>‎filehandle.close()</code> ====
*القيم المعادة:‏‏ [[JavaScript/Promise|<Promise>]]
يغيِّر هذا التابع المستخدم المالك للملف ثم سيُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية.
====<code>‎filehandle.close()</code>====
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* القيم المعادة:‏‏ <Promise> يعاد كائن من النوع <code>Promise‎</code> الذي سيُقبَل متى ما أُغلِق واصف الملف الضمني، أو سيُرفَض إن حصل أي خطأ أثناء إغلاق الملف.
*القيم المعادة:‏‏ [[JavaScript/Promise|<Promise>]] يعاد كائن من النوع <code>Promise‎</code> الذي سيُقبَل متى ما أُغلِق واصف الملف الضمني، أو سيُرفَض إن حصل أي خطأ أثناء إغلاق الملف.
يوضح المثال التالي كيفية استعمال هذا التابع لإغلاق ملف:
يوضح المثال التالي كيفية استعمال هذا التابع لإغلاق ملف:<syntaxhighlight lang="javascript">const fsPromises = require('fs').promises;
<syntaxhighlight lang="javascript">const fsPromises = require('fs').promises;
async function openAndClose() {
async function openAndClose() {
   let filehandle;
   let filehandle;
سطر 2٬305: سطر 2٬445:
   }
   }
}
}
</syntaxhighlight>  
</syntaxhighlight>
 
====<code>filehandle.datasync()‎</code>====
==== <code>filehandle.datasync()‎</code> ====
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* القيم المعادة:‏‏ <Promise>
*القيم المعادة:‏‏ [[JavaScript/Promise|<Promise>]]
ينفِّذ هذا التابع استدعاء النظام <code>fdatasync(2)‎</code> بشكل غير متزامن. يُقبَل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
ينفِّذ هذا التابع استدعاء النظام <code>[http://man7.org/linux/man-pages/man2/fdatasync.2.html fdatasync(2)]‎</code> بشكل غير متزامن. يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية.
==== <code>filehandle.fd‎</code> ====
====<code>filehandle.fd‎</code>====
أضيفت في الإصدار: v10.0.0.
*‏‏ [[JavaScript/Promise|<Promise>]] عدد يمثل واصف الملف المُدار من قِبَل الكائن <code>FileHandle‎</code>.
====<code>filehandle.read(buffer, offset, length, position)‎</code>====
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
*‏‏ <Promise> عدد يمثل واصف الملف المُدار من قِبَل الكائن <code>FileHandle‎</code>.
*<code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/Uint8Array|<Uint8Array>]] يمثِّل ذاكرة التخزين المؤقتة التي ستُكتَب فيها البيانات المقروءة من الملف.
==== <code>filehandle.read(buffer, offset, length, position)‎</code> ====
*<code>offset</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في ذاكرة التخزين المؤقتة <code>buffer‎</code> (أي مقدار الإزاحة من بدياتها).
*<code>length</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد قراءتها من الملف.
*<code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية قراءة البيانات من الملف. إن كانت قيمة هذا الوسيط <code>null‎</code>، فستُقرَأ البيانات بدءًا من موضع المؤشر الحالي في الملف ثم سيُحدَّث موضع مؤشِّر الملف بعد انتهاء عملية القراءة. إن كانت قيمة هذا الوسيط عددًا صحيحًا، فسيبقى موضع مؤشِّر الملف دون تغيير.
*القيم المعادة: [[JavaScript/Promise|<Promise>]]
يقرأ هذا التابع البيانات من الملف. عَقِب نجاح عملية القراءة، يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع كائن يحوي الخاصية <code>bytesRead‎</code> التي تحدد عدد البايتات التي قُرأَت، والخاصية <code>buffer‎</code> التي تشير إلى محتوى الوسيط <code>buffer‎</code> الذي يحوي البيانات التي قُرأَت من الملف.
====<code>filehandle.readFile(options)‎</code>====
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | <Uint8Array> يمثِّل ذاكرة التخزين المؤقتة التي ستُكتَب فيها البيانات المقروءة من الملف.
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
* <code>offset</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في ذاكرة التخزين المؤقتة <code>buffer‎</code> (أي مقدار الإزاحة من بدياتها).
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>null‎</code>.
* <code>length</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد قراءتها من الملف.
**<code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'r'</code>.
* <code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية قراءة البيانات من الملف. إن كانت قيمة هذا الوسيط <code>null‎</code>، فستُقرَأ البيانات بدءًا من موضع المؤشر الحالي في الملف ثم سيُحدَّث موضع مؤشِّر الملف بعد انتهاء عملية القراءة. إن كانت قيمة هذا الوسيط عددًا صحيحًا، فسيبقى موضع مؤشِّر الملف دون تغيير.
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
* القيم المعادة: <Promise>
يقرأ هذا التابع كامل محتوى ملفٍ بشكل غير متزامن. يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع محتوى الملف. إن لم يُحدَّد أي ترميز (باستعمال الخيار <code>options.encoding‎</code>)، فستُعاد البيانات ضمن كائن من النوع <code>[[Node.js/buffer|buffer‎]]</code>. أمَّا إن أعطي الترميز، فستُعاد البيانات ضمن سلسلة نصية. إن كان الوسيط <code>options‎</code> سلسلة نصية، فسيُحدِّد حينئذٍ  الترميز. عندما يكون المسار <code>path‎</code> مجلدًا، سيختلف سلوك التابع <code>fsPromises.readFile()‎</code> اعتمادًا على المنصة المستعملة؛ في أنظمة التشغيل macOS، ولينكس، وويندوز، سيؤدي ذلك إلى رفض الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع خطأ. أمَّا في FreeBSD، فسيعاد تمثيلٌ بمحتوى المجلد. يجب على مقبض الملف <code>FileHandle‎</code> المحدَّد أن يدعم عملية القراءة.
يقرأ هذا التابع البيانات من الملف.
====<code>filehandle.stat([options])</code>====
عَقِب نجاح عملية القراءة، يُقبَل الكائن <code>Promise‎</code> مع كائن يحوي الخاصية <code>bytesRead‎</code> التي تحدد عدد البايتات التي قُرأَت، والخاصية <code>buffer‎</code> التي تشير إلى محتوى الوسيط <code>buffer‎</code> الذي يحوي البيانات التي قُرأَت من الملف.
{| class="wikitable mw-collapsible"
==== <code>filehandle.readFile(options)</code> ====
|+سجل التغييرات
أضيف في الإصدار: v10.0.0.
!الإصدار
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
!التغييرات
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>null‎</code>.
|-
** <code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'r'</code>.
|v10.5.0
* القيم المعادة:‏ <Promise>
|يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع <code>bigint</code>.
يقرأ هذا التابع كامل محتوى ملفٍ بشكل غير متزامن.
|-
يُقبَل الكائن <code>Promise‎</code> مع محتوى الملف. إن لم يُحدَّد أي ترميز (باستعمال الخيار <code>options.encoding‎</code>)، فستُعاد البيانات ضمن كائن من النوع <code>buffer‎</code>. أمَّا إن أعطي الترميز، فستُعاد البيانات ضمن سلسلة نصية.
|v10.0.0
إن كان الوسيط <code>options‎</code> سلسلة نصية، فسيُحدِّد حينئذٍ  الترميز.
|أضيف هذا التابع.
عندما يكون المسار <code>path‎</code> مجلدًا، سيختلف سلوك التابع <code>fsPromises.readFile()‎</code> اعتمادًا على المنصة المستعملة؛ في أنظمة التشغيل macOS، ولينكس، وويندوز، سيؤدي ذلك إلى رفض الكائن <code>Promise‎</code> مع خطأ. أمَّا في FreeBSD، فسيعاد تمثيلٌ بمحتوى المجلد.
|}
يجب على مقبض الملف <code>FileHandle‎</code> المحدَّد أن يدعم عملية القراءة.
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]
==== <code>filehandle.stat([options])</code> ====
**<code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع <code>bigint</code>. القيمة الافتراضية هي: <code>false‎</code>.
سجل التغييرات
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
 
الإصدار
التغييرات
v10.5.0
يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v10.0.0
أضيف هذا التابع.
 
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]
** <code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
* القيم المعادة:‏ <Promise>
يجلب هذا التابع معلومات حول الملف (أي يعيد الكائن <code>fs.Stats‎</code> للملف).
يجلب هذا التابع معلومات حول الملف (أي يعيد الكائن <code>fs.Stats‎</code> للملف).
==== <code>filehandle.sync()</code> ====
====<code>filehandle.sync()</code>====
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
ينفِّذ هذا التابع دالة النظام <code>fsync(2)‎</code> بشكل غير متزامن. يُقبَل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
ينفِّذ هذا التابع دالة النظام <code>fsync(2)‎</code> بشكل غير متزامن. يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية.
==== <code>filehandle.truncate(len)</code> ====
====<code>filehandle.truncate(len)</code>====
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>len</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0‎</code>.
*<code>len</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0‎</code>.
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يقطع هذا التابع الملف إلى الحجم <code>len‎</code> ثم يُقبَل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
يقطع هذا التابع الملف إلى الحجم <code>len‎</code> ثم يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية. إن كان حجم الملف أكبر من الحجم <code>len‎</code> المعطى بالبايت، فستُعاد البايتات <code>len‎</code> الأولى فقط من الملف. على سبيل المثال، يعيد البرنامج التالي البايتات الأربعة الأولى فقط من الملف:<syntaxhighlight lang="javascript">const fs = require('fs');
إن كان حجم الملف أكبر من الحجم <code>len‎</code> المعطى بالبايت، فستُعاد البايتات <code>len‎</code> الأولى فقط من الملف.
على سبيل المثال، يعيد البرنامج التالي البايتات الأربعة الأولى فقط من الملف:
<syntaxhighlight lang="javascript">const fs = require('fs');
const fsPromises = fs.promises;
const fsPromises = fs.promises;


سطر 2٬380: سطر 2٬513:


doTruncate().catch(console.error);
doTruncate().catch(console.error);
</syntaxhighlight>
</syntaxhighlight>إن كان حجم الملف أقل من الحجم <code>len‎</code> المراد اقتطاعه، فسيُمدَّد حجم الملف إلى الحجم <code>len‎</code> بالبايت وستُملَأ البايتات المضافة ببايتات عدمية (أي بالقيمة <code>'\0'‎</code>):<syntaxhighlight lang="javascript">const fs = require('fs');
إن كان حجم الملف أقل من الحجم <code>len‎</code> المراد اقتطاعه، فسيُمدَّد حجم الملف إلى الحجم <code>len‎</code> بالبايت وستُملَأ البايتات المضافة ببايتات عدمية (أي بالقيمة <code>'\0'‎</code>):
<syntaxhighlight lang="javascript">const fs = require('fs');
const fsPromises = fs.promises;
const fsPromises = fs.promises;


سطر 2٬403: سطر 2٬534:


doTruncate().catch(console.error);
doTruncate().catch(console.error);
</syntaxhighlight>
</syntaxhighlight>البايتات الأخيرة المضافة هي بايتات عدمية (<code>'\0'‎</code>) تستعمل لتعويض البايتات الإضافية الناتجة عن عملية الإفراط في الاقتطاع (over-truncation).
البايتات الأخيرة المضافة هي بايتات عدمية (<code>'\0'‎</code>) تستعمل لتعويض البايتات الإضافية الناتجة عن عملية الإفراط في الاقتطاع (over-truncation).
====<code>filehandle.utimes(atime, mtime)</code>====
==== <code>filehandle.utimes(atime, mtime)</code> ====
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>atime</code>:‏ [[JavaScript/Number|<number>]]‏ | [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
*<code>atime</code>:‏ [[JavaScript/Number|<number>]]‏ | [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
* <code>mtime</code>:‏ [[JavaScript/Number|<number>]] ‏| [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
*<code>mtime</code>:‏ [[JavaScript/Number|<number>]] ‏| [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمقبض <code>FileHandle‎</code> ثم يقبل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمقبض <code>FileHandle‎</code> ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية. لا يعمل هذا التابع على إصدارات AIX التي قبل 7.1، إذ سيقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع خطأ رمزه <code>UV_ENOSYS‎</code>.
لا يعمل هذا التابع على إصدارات AIX التي قبل 7.1، إذ سيقبل الكائن <code>Promise‎</code> مع خطأ رمزه<code>UV_ENOSYS‎</code>.
====<code>filehandle.write(buffer, offset, length, position)</code>====
==== <code>filehandle.write(buffer, offset, length, position)</code> ====
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]] يمثِّل جزءًا من ذاكرة التخزين المؤقتة التي ستُقرَأ منها البيانات المراد كتابتها في الملف.
*<code>buffer</code>:‏ [[Node.js/buffer|<Buffer>]]‏ | [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]] يمثِّل جزءًا من ذاكرة التخزين المؤقتة التي ستُقرَأ منها البيانات المراد كتابتها في الملف.
* <code>offset</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد جزء البيانات من ذاكرة التخزين المؤقتة <code>buffer‎</code> المراد كتابته.
*<code>offset</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد جزء البيانات من ذاكرة التخزين المؤقتة <code>buffer‎</code> المراد كتابته.
* <code>length</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد كتابتها في الملف.
*<code>length</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد كتابتها في الملف.
* <code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان <code>typeof position !== 'number'</code>، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة <code>pwrite(2)‎</code>.
*<code>position</code>:‏ [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان <code>typeof position !== 'number'</code>، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة <code>[http://man7.org/linux/man-pages/man2/pwrite.2.html pwrite(2)]‎</code>.
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يكتب هذا التابع البيانات المحددة في الذاكرة <code>buffer‎</code> في الملف.
يكتب هذا التابع البيانات المحددة في الذاكرة <code>buffer‎</code> في الملف. عَقِب نجاح عملية الكتابة، يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع كائن يحوي الخاصية <code>bytesWritten</code> التي تحدد عدد البايتات التي كُتبَت، والخاصية <code>buffer‎</code> التي تشير إلى محتوى الوسيط <code>buffer‎</code> الذي يحوي البيانات التي كُتبَت في الملف. إنه من غير الآمن استدعاء التابع <code>filehandle.write()‎</code> عدة مرات مع نفس الملف دون انتظار قبول الكائن [[JavaScript/Promise|<code>Promise‎</code>]] (أو رفضه). في مثل هذه الحالة، يُنصَح باستعمال التابع <code>[[Node.js/fs#fs.createWriteStream.28path.5B.2C options.5D.29.E2.80.8E|fs.createWriteStream()‎]]</code>. في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط <code>position‎</code> وستضيف البيانات إلى نهاية الملف دومًا.
عَقِب نجاح عملية الكتابة، يُقبَل الكائن <code>Promise‎</code> مع كائن يحوي الخاصية <code>bytesWritten</code> التي تحدد عدد البايتات التي كُتبَت، والخاصية <code>buffer‎</code> التي تشير إلى محتوى الوسيط <code>buffer‎</code> الذي يحوي البيانات التي كُتبَت في الملف.
====<code>filehandle.writeFile(data, options)</code>====
إنه من غير الآمن استدعاء التابع <code>filehandle.write()‎</code> عدة مرات مع نفس الملف دون انتظار قبول الكائن <code>Promise‎</code> (أو رفضه). في مثل هذه الحالة، يُنصَح باستعمال التابع <code>fs.createWriteStream()‎</code>.
في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط <code>position‎</code> وستضيف البيانات إلى نهاية الملف دومًا.
==== <code>filehandle.writeFile(data, options)</code> ====
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>data</code>:‏ [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[JavaScript/TypedArray|<TypedArray>]] | [[JavaScript/DataView|<DataView>]]
*<code>data</code>:‏ [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[JavaScript/TypedArray|<TypedArray>]] | [[JavaScript/DataView|<DataView>]]
* <code>options</code>:‏ [[JavaScript/Object|<Object>]] | [[JavaScript/String|<string>]]
*<code>options</code>:‏ [[JavaScript/Object|<Object>]] | [[JavaScript/String|<string>]]
** <code>encoding</code>:‏‏ [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
**<code>encoding</code>:‏‏ [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
** <code>mod</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
**<code>mod</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
** <code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'w'</code>.
**<code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'w'</code>.
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يكتب هذا التابع البيانات الموجودة في الوسيط <code>data</code> في الملف بشكل غير متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يمكن أن يكون الوسيط <code>data‎</code> سلسلةً نصيةً أو مخزنًا مؤقتًا في الذاكرة (buffer). يُقبَل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
يكتب هذا التابع البيانات الموجودة في الوسيط <code>data</code> في الملف بشكل غير متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يمكن أن يكون الوسيط <code>data‎</code> سلسلةً نصيةً أو مخزنًا مؤقتًا في الذاكرة (buffer). يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية. سيُتجاهَل الخيار <code>encoding‎</code> إن كان الوسيط <code>data‎</code> مخزنًا مؤقتًا (buffer). إن كان الوسيط <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز. يجب على مقبض الملف <code>FileHandle‎</code> المعطى أن يدعم عملية الكتابة على الملف. إنه من غير الآمن استدعاء التابع <code>filehandle.writeFile()‎</code> عدة مرات مع نفس الملف دون قبول الكائن [[JavaScript/Promise|<code>Promise‎</code>]] (أو رفضه).
سيُتجاهَل الخيار <code>encoding‎</code> إن كان الوسيط <code>data‎</code> مخزنًا مؤقتًا (buffer).
===<code>fsPromises.access(path[, mode])</code>===
إن كان الوسيط <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز.
يجب على مقبض الملف <code>FileHandle‎</code> المعطى أن يدعم عملية الكتابة على الملف.
إنه من غير الآمن استدعاء التابع <code>filehandle.writeFile()‎</code> عدة مرات مع نفس الملف دون قبول الكائن <code>Promise‎</code> (أو رفضه).
=== <code>fsPromises.access(path[, mode])</code> ===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>path‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>path‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>mode‎</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>fs.constants.F_OK‎</code>.
*<code>mode‎</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>fs.constants.F_OK‎</code>.
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يفحص هذا التابع أذونات المستخدم للملف أو المجلد المحدَّد في المسار <code>path‎</code>. الوسيط <code>mode‎</code> الاختياري هو عددٌ صحيحٌ يحدِّد عمليات التحقق من قابلية الوصول المراد تنفيذها. اطلع على القسم «ثوابت الوصول للملف» لمعرفة القيمة المتاحة للوسيط <code>mode‎</code>. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل <code>fs.constants.W_OK | fs.constants.R_OK‎</code>).
يفحص هذا التابع أذونات المستخدم للملف أو المجلد المحدَّد في المسار <code>path‎</code>. الوسيط <code>mode‎</code> الاختياري هو عددٌ صحيحٌ يحدِّد عمليات التحقق من قابلية الوصول المراد تنفيذها. اطلع على القسم «ثوابت الوصول للملف» لمعرفة القيمة المتاحة للوسيط <code>mode‎</code>. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل <code>fs.constants.W_OK | fs.constants.R_OK‎</code>). إن نجحت عملية التحقق من قابلية الوصول، فسيُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية قيمة. وإن فشلت عملية التحقق من أيِّ قابليةٍ للوصول، فسيُرفَض الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع الكائن <code>[[Node.js/errors|Error‎]]</code>. يتحقق المثال التالي إن كان الملف <code>/etc/passwd</code> قابلًا للقراءة أو الكتابة من قِبَل العملية الحالية:<syntaxhighlight lang="javascript">const fs = require('fs');
إن نجحت عملية التحقق من قابلية الوصول، فسيُقبَل الكائن <code>Promise‎</code> دون أية قيمة. وإن فشلت عملية التحقق من أيِّ قابليةٍ للوصول، فسيُرفَض الكائن <code>Promise‎</code> مع الكائن <code>Error‎</code>. يتحقق المثال التالي إن كان الملف <code>/etc/passwd</code> قابلًا للقراءة أو الكتابة من قِبَل العملية الحالية:
<syntaxhighlight lang="javascript">const fs = require('fs');
const fsPromises = fs.promises;
const fsPromises = fs.promises;


سطر 2٬449: سطر 2٬569:
   .then(() => console.log('can access'))
   .then(() => console.log('can access'))
   .catch(() => console.error('cannot access'));
   .catch(() => console.error('cannot access'));
</syntaxhighlight>
</syntaxhighlight>لا يُنصَح باستدعاء <code>fsPromises.access()‎</code> للتحقُّق من قابلة الوصول للملف قبل استدعاء <code>[[Node.js/fs#fsPromises.open.28path.2C flags.5B.2C mode.5D.29|fsPromises.open()‎]]</code>، إذ يؤدي فعل ذلك إلى خلق «حالة تسابق» (race condition) لأنَّه ربما قد تُغيِّر عمليات أخرى حالة الملف بين الاستدعائين. بدلًا من ذلك، يجب على شيفرة المستخدم أن تفتح وتقرأ وتكتب في الملف مباشرةً وأن تعالج أي خطأ يُطلَق إن لم يكن الملف قابلًا للوصول.
لا يُنصَح باستدعاء <code>fsPromises.access() ‎</code> للتحقُّق من قابلة الوصول للملف قبل استدعاء <code>fsPromises.open()‎</code>، إذ يؤدي فعل ذلك إلى خلق «حالة تسابق» (race condition) لأنَّه ربما قد تُغيِّر عمليات أخرى حالة الملف بين الاستدعائين. بدلًا من ذلك، يجب على شيفرة المستخدم أن تفتح وتقرأ وتكتب في الملف مباشرةً وأن تعالج أي خطأ يُطلَق إن لم يكن الملف قابلًا للوصول.
 
=== <code>fsPromises.appendFile(path, data[, options])</code> ===
===<code>fsPromises.appendFile(path, data[, options])</code>===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>path‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<number>]] اسم أو مقبض (<code>FileHandle‎</code>) الملف.
*<code>path‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<number>]] اسم أو مقبض (<code>[[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 FileHandle.E2.80.8E|FileHandle‎]]</code>) الملف.
* <code>data‎</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]
*<code>data‎</code>:‏ [[JavaScript/String|<string>]] ‏| [[Node.js/buffer|<Buffer>]]
* <code>options‎</code>:‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
*<code>options‎</code>:‏ [[JavaScript/Object|<Object>]]‏ | [[JavaScript/String|<string>]]
** <code>encoding‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
**<code>encoding‎</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
** <code>mode‎</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
**<code>mode‎</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
** <code>mode‎</code>:‏ [[JavaScript/String|<string>]] ارجع إلى القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'a'</code>.
**<code>mode‎</code>:‏ [[JavaScript/String|<string>]] ارجع إلى القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'a'</code>.
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يضيف هذا التابع بياناتٍ إلى ملف بشكل غير متزامن، أو ينشئ ملفًا ويضع البيانات فيه إن لم يكن هذا الملف موجودًا. يمكن أن تكون البيانات <code>data‎</code> المراد كتابتها سلسلةً نصيةً أو كائنًا من النوع <code>Buffer‎</code>.  يُقبَل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
يضيف هذا التابع بياناتٍ إلى ملف بشكل غير متزامن، أو ينشئ ملفًا ويضع البيانات فيه إن لم يكن هذا الملف موجودًا. يمكن أن تكون البيانات <code>data‎</code> المراد كتابتها سلسلةً نصيةً أو كائنًا من النوع <code>[[Node.js/buffer|Buffer‎]]</code>.  يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية. إن كان الوسيط <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز. يمكن أن يُعطَى المسار <code>path‎</code> كمقبض <code>[[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 FileHandle.E2.80.8E|FileHandle‎]]</code> لملفٍ فُتِح لإضافة البيانات فيه (باستعمال <code>fsPromises.open()‎</code>). لن يُغلَق واصف الملف بشكل تلقائي.
إن كان الوسيط <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز.
===<code>fsPromises.chmod(path, mode)</code>===
يمكن أن يُعطَى المسار <code>path‎</code> كمقبض <code>FileHandle‎</code> لملفٍ فُتِح لإضافة البيانات فيه (باستعمال <code>fsPromises.open()‎</code>). لن يُغلَق واصف الملف بشكل تلقائي.
=== <code>fsPromises.chmod(path, mode)</code> ===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>mode‎</code>:‏ [[JavaScript/Number|<integer>]]
*<code>mode‎</code>:‏ [[JavaScript/Number|<integer>]]
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يغيِّر هذا التابع بشكل غير متزامن أذونات ملفٍ ثم يقبل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
يغيِّر هذا التابع بشكل غير متزامن أذونات ملفٍ ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية.
=== <code>fsPromises.chown(path, uid, gid)</code> ===
===<code>fsPromises.chown(path, uid, gid)</code>===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>uid</code>:‏ [[JavaScript/Number|<integer>]]
*<code>uid</code>:‏ [[JavaScript/Number|<integer>]]
* <code>gid</code>:‏ [[JavaScript/Number|<integer>]]
*<code>gid</code>:‏ [[JavaScript/Number|<integer>]]
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يغيِّر هذا التابع بشكل غير متزامن المالك والمجموعة المالكة لملف ثم يقبل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
يغيِّر هذا التابع بشكل غير متزامن المالك والمجموعة المالكة لملف ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية.
=== <code>fsPromises.copyFile(src, dest[, flags])</code> ===
===<code>fsPromises.copyFile(src, dest[, flags])</code>===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>src</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]] اسم الملف المراد نسخه.
*<code>src</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]] اسم الملف المراد نسخه.
* <code>dest</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]] اسم الملف الوجهة الذي سيُنسَخ في الملف المحدَّد في المعامل src.
*<code>dest</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]] اسم الملف الوجهة الذي سيُنسَخ في الملف المحدَّد في المعامل src.
* <code>flags</code>:‏ [[JavaScript/Number|<number>]] مُعدِّلات (modifiers) عملية النسخ. القيمة الافتراضية هي: 0.
*<code>flags</code>:‏ [[JavaScript/Number|<number>]] مُعدِّلات (modifiers) عملية النسخ. القيمة الافتراضية هي: 0.
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
ينسخ هذا التابع ملفًا من <code>src‎</code> إلى <code>dest‎</code> بشكل غير متزامن. يُستبدَل ملف الوجهة المحدد بالوسيط <code>dest‎</code> إن كان موجودًا مسبقًا بشكل افتراضي. يُقبَل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
ينسخ هذا التابع ملفًا من <code>src‎</code> إلى <code>dest‎</code> بشكل غير متزامن. يُستبدَل ملف الوجهة المحدد بالوسيط <code>dest‎</code> إن كان موجودًا مسبقًا بشكل افتراضي. يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية. لا تعطِ Node.js أية ضمانات متعلقة بتجزئة عملية النسخ. إن حصل أي خطأ بعد فتح الملف الوجهة للكتابة، ستحاول Node.js إزالته. الوسيط <code>flags‎</code> اختياري وهو عددٌ صحيحٌ يحدِّد سلوك عملية النسخ. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل <code>fs.constants.COPYFILE_FICLONE | fs.constants.COPYFILE_EXCL</code>). الثوابت المدعومة هي:
لا تعطِ Node.js أية ضمانات متعلقة بتجزئة عملية النسخ. إن حصل أي خطأ بعد فتح الملف الوجهة للكتابة، ستحاول Node.js إزالته.
*<code>fs.constants.COPYFILE_EXCL‎</code>: ستفشل عملية النسخ إن كان الملف <code>dest‎</code> موجودًا من قبل.
الوسيط <code>flags‎</code> اختياري وهو عددٌ صحيحٌ يحدِّد سلوك عملية النسخ. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل <code>fs.constants.COPYFILE_FICLONE | fs.constants.COPYFILE_EXCL</code>). الثوابت المدعومة هي:
* <code>fs.constants.COPYFILE_EXCL‎</code>: ستفشل عملية النسخ إن كان الملف <code>dest‎</code> موجودًا من قبل.
<code>fs.constants.COPYFILE_FICLONE‎</code>: ستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستُستخدَم آلية النسخ التراجعي (fallback copy).
<code>fs.constants.COPYFILE_FICLONE‎</code>: ستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستُستخدَم آلية النسخ التراجعي (fallback copy).
* <code>fs.constants.COPYFILE_FICLONE‎</code>: ستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستفشل عملية النسخ.
*<code>fs.constants.COPYFILE_FICLONE‎</code>: ستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستفشل عملية النسخ.
<syntaxhighlight lang="javascript">const fsPromises = require('fs').promises;
<syntaxhighlight lang="javascript">const fsPromises = require('fs').promises;


سطر 2٬494: سطر 2٬610:
   .then(() => console.log('source.txt was copied to destination.txt'))
   .then(() => console.log('source.txt was copied to destination.txt'))
   .catch(() => console.log('The file could not be copied'));
   .catch(() => console.log('The file could not be copied'));
</syntaxhighlight>
</syntaxhighlight>إن كان الوسيط الأخير عددًا، فهو يحدِّد الوسيط <code>flags‎</code>:<syntaxhighlight lang="javascript">const fs = require('fs');
إن كان الوسيط الأخير عددًا، فهو يحدِّد الوسيط <code>flags‎</code>:
<syntaxhighlight lang="javascript">const fs = require('fs');
const fsPromises = fs.promises;
const fsPromises = fs.promises;
const { COPYFILE_EXCL } = fs.constants;
const { COPYFILE_EXCL } = fs.constants;
سطر 2٬505: سطر 2٬619:
   .catch(() => console.log('The file could not be copied'));
   .catch(() => console.log('The file could not be copied'));
</syntaxhighlight>
</syntaxhighlight>
=== <code>fsPromises.lchmod(path, mode)</code> ===
===<code>fsPromises.lchmod(path, mode)</code>===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>mode</code>:‏ [[JavaScript/Number|<integer>]]
*<code>mode</code>:‏ [[JavaScript/Number|<integer>]]
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يغيِّر هذا التابع أذونات وصلةٍ رمزيةٍ بشكل غير متزامن ثم يقبل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
يغيِّر هذا التابع أذونات وصلةٍ رمزيةٍ بشكل غير متزامن ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية. هذا التابع متاحٌ في أنظمة macOS فقط.
هذا التابع متاحٌ في أنظمة macOS فقط.
===<code>fsPromises.lchown(path, uid, gid)</code>===
=== <code>fsPromises.lchown(path, uid, gid)</code> ===
سجل التغييرات
سجل التغييرات


الإصدار
الإصدار التغييرات v10.6.0 لم تعد هذه الواجهة البرمجية مهملةً بعد الآن. v10.0.0 أضيف هذا التابع.
التغييرات
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
v10.6.0
*<code>uid</code>:‏ [[JavaScript/Number|<integer>]]
لم تعد هذه الواجهة البرمجية مهملةً بعد الآن.
*<code>gid</code>:‏ [[JavaScript/Number|<integer>]]
v10.0.0
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
أضيف هذا التابع.
يغيِّر هذا التابع بشكل غير متزامن المالك والمجموعة المالكة لوصلةٍ رمزيةٍ ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية.
 
===<code>fsPromises.link(existingPath, newPath)</code>===
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>uid</code>:‏ [[JavaScript/Number|<integer>]]
* <code>gid</code>:‏ [[JavaScript/Number|<integer>]]
* القيم المعادة:‏ <Promise>
يغيِّر هذا التابع بشكل غير متزامن المالك والمجموعة المالكة لوصلةٍ رمزيةٍ ثم يقبل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
=== <code>fsPromises.link(existingPath, newPath)</code> ===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>existingPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>existingPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>newPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>newPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
ينشئ هذا التابع وصلةً جديدةً (وصلةً صلبةً) للملف الحالي عبر استدعاء <code>link(2)‎</code> بشكل غير متزامن. يُقبَل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
ينشئ هذا التابع وصلةً جديدةً (وصلةً صلبةً) للملف الحالي عبر استدعاء <code>[http://man7.org/linux/man-pages/man2/link.2.html link(2)]‎</code> بشكل غير متزامن. يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية.
=== <code>fsPromises.lstat(path[, options])</code> ===
===<code>fsPromises.lstat(path[, options])‎</code>===
{| class="wikitable mw-collapsible"
|+سجل التغييرات
!الإصدار
!التغييرات
|-
|v10.5.0
|يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع <code>bigint</code>.
|-
|v10.0.0
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]
**<code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يجلب هذا التابع معلومات حول الوصلة الرمزية ذات المسار <code>path‎</code> عبر استدعاء دالة النظام <code>lstat(2)‎</code> بشكل غير متزامن. يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع الكائن <code>fs.Stats‎</code> للوصلة الرمزية المعطاة عند نجاح العملية.
===<code>fsPromises.mkdir(path[, mode])‎</code>===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
سجل التغييرات
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
 
*<code>mode</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o777‎</code>.
الإصدار
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
التغييرات
ينشئ هذا التابع مجلدًا جديدًا بشكل غير متزامن ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية.
v10.5.0
===<code>fsPromises.mkdtemp(prefix[, options])</code>===
يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v10.0.0
لم يعد المعامل <code>callback‎</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError‎</code> في وقت التشغيل إن لم يُمرَّر.
v10.0.0
أضيف هذا التابع.
 
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]
** <code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
* القيم المعادة:‏ <Promise>
يجلب هذا التابع معلومات حول الوصلة الرمزية ذات المسار <code>path‎</code> عبر استدعاء دالة النظام <code>lstat(2)‎</code> بشكل غير متزامن. يُقبَل الكائن <code>Promise‎</code> مع الكائن <code>fs.Stats‎</code> للوصلة الرمزية المعطاة عند نجاح العملية.
=== <code>fsPromises.mkdir(path[, mode])</code> ===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>prefix</code>:‏‏ [[JavaScript/String|<string>]]‏
* <code>mode</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o777‎</code>.
*<code>options</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Object|<Object>]]
* القيم المعادة:‏ <Promise>
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ القيمة الافتراضية هي: <code>'utf8'</code>.
ينشئ هذا التابع مجلدًا جديدًا بشكل غير متزامن ثم يقبل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
=== <code>fsPromises.mkdtemp(prefix[, options])</code> ===
ينشئ هذا التابع مجلدًا فريدًا مؤقتًا بشكل غير متزامن ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية. يولِّد هذا التابع ستة محارف عشوائية لتضاف إلى نهاية البادئة <code>prefix‎</code> المعطاة لإنشاء مجلدٍ فريدٍ مؤقتٍ. يمكن أن يكون الوسيط <code>options‎</code> سلسلةً نصيةً تحدِّد الترميز، أو كائنًا مع الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله.<syntaxhighlight lang="javascript">fsPromises.mkdtemp(path.join(os.tmpdir(), 'foo-'))
أضيف في الإصدار: v10.0.0.
* <code>prefix</code>:‏‏ [[JavaScript/String|<string>]]‏
* <code>options</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ القيمة الافتراضية هي: <code>'utf8'</code>.
* القيم المعادة:‏ <Promise>
ينشئ هذا التابع مجلدًا فريدًا مؤقتًا بشكل غير متزامن ثم يقبل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
يولِّد هذا التابع ستة محارف عشوائية لتضاف إلى نهاية البادئة <code>prefix‎</code> المعطاة لإنشاء مجلدٍ فريدٍ مؤقتٍ.
يمكن أن يكون الوسيط <code>options‎</code> سلسلةً نصيةً تحدِّد الترميز، أو كائنًا مع الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله.
<syntaxhighlight lang="javascript">fsPromises.mkdtemp(path.join(os.tmpdir(), 'foo-'))
   .catch(console.error);
   .catch(console.error);
</syntaxhighlight>
</syntaxhighlight>سيضيف التابع <code>fsPromises.mkdtemp()‎</code> المحارف الستة العشوائية المختارة مباشرةً إلى السلسلة <code>prefix‎</code> النصية. على سبيل المثال، إن كان لدينا المجلد <code>/tmp‎</code> وأردنا إنشاء مجلد مؤقت داخله، فيجب أن تنتهي البادئة <code>prefix‎</code> بالفاصلة الزائدة المستخدمة عادةً في فصل المسار في المنصة المستعملة آنذاك (<code>require('path').sep‎</code>).
سيضيف التابع <code>fsPromises.mkdtemp()‎</code> المحارف الستة العشوائية المختارة مباشرةً إلى السلسلة <code>prefix‎</code> النصية. على سبيل المثال، إن كان لدينا المجلد <code>/tmp‎</code> وأردنا إنشاء مجلد مؤقت داخله، فيجب أن تنتهي البادئة <code>prefix‎</code> بالفاصلة الزائدة المستخدمة عادةً في فصل المسار في المنصة المستعملة آنذاك (<code>require('path').sep‎</code>).
===<code>fsPromises.open(path, flags[, mode])‎</code>===
=== <code>fsPromises.open(path, flags[, mode])</code> ===
أضيف في الإصدار: v10.0.0.
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>flags</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Number|<number>]] اطلع على القسم «دعم رايات نظام الملفات».
* <code>mode</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code> (قابلية القراءة والكتابة).
* القيم المعادة:‏ <Promise>
يفتح هذا التابع ملفًا بشكل غير متزامن ثم يعيد الكائن <code>Promise‎</code> مع المقبض <code>FileHandle‎</code> لذاك الملف عند نجاح العملية. اطلع على توثيق الدالة <code>open(2)‎</code> لتفاصيل أوسع.
يضبط الوسيط <code>mode‎</code> نمط الملف (الأذونات والبتات اللاصقة [sticky bits]) في حال لم يكن الملف موجودًا وأنشئ آنذاك.
تأخذ دالة رد النداء وسيطين هما: <code>err‎</code> و <code>fd‎</code>.
تعدُّ بعض المحارف (مثل <code>< > : " / \ | ? *‎</code>) محجوزةً في ويندوز كما أشير إلى ذلك التوثيق «تسمية الملفات، والمسارات، ومجالات الأسماء». في نظام الملفات NTFS، إن احتوى اسم الملف نقطتين رأسيتين، فستفتح Node.js مجرًى في نظام الملفات كما موضح في هذه الصفحة.
=== <code>fsPromises.readdir(path[, options])</code> ===
أضيف في الإصدار: v10.0.0.
سجل التغييرات
 
الإصدار
التغييرات
v10.10.0
أضيف الخيار <code>withFileTypes‎</code>.
v10.0.0
أضيف هذا التابع.
 
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>'utf8'‎</code>.
** <code>withFileTypes</code>:‏ [[JavaScript/Boolean|<boolean>]] القيمة الافتراضية هي: <code>false‎</code>.
* القيم المعادة:‏ <Promise>
يقرأ هذا التابع محتوى المجلد المعطى بشكل غير متزامن ثم يقبل الكائن <code>Promise‎</code> مع مصفوفة تحوي أسماء الملفات في المجلد باستثناء المجلد <code>'.'‎</code> والمجلد <code>'..'‎</code>.
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله لأسماء الملفات الممرَّرة إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'‎</code>، فستُمرَّر أسماء الملفات المعادة ككائنات من النوع <code>Buffer‎</code>.
إن ضُبِط الخيار <code>options.withFileTypes‎</code> إلى القيمة <code>true‎</code>، فستحوي المصفوفة <code>files‎</code> الكائنات <code>fs.Diret‎</code>.
 
=== <code>fsPromises.readFile(path[, options])</code> ===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<integer>]] اسمُ أو مقبض (<code>FileHandle‎</code>) ملفٍ.
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>options</code>:[[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
*<code>flags</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/Number|<number>]] اطلع على القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]».
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>null</code>.
*<code>mode</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code> (قابلية القراءة والكتابة).
** <code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على قسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'r'</code>.
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
* القيم المعادة:‏ <Promise>
يفتح هذا التابع ملفًا بشكل غير متزامن ثم يعيد الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع المقبض [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 FileHandle.E2.80.8E|<code>FileHandle‎</code>]] لذاك الملف عند نجاح العملية. اطلع على توثيق الدالة <code>[http://man7.org/linux/man-pages/man2/open.2.html open(2)‎]</code> لتفاصيل أوسع. يضبط الوسيط <code>mode‎</code> نمط الملف (الأذونات والبتات اللاصقة [sticky bits]) في حال لم يكن الملف موجودًا وأنشئ آنذاك. تأخذ دالة رد النداء وسيطين هما: <code>err‎</code> و <code>fd‎</code>. تعدُّ بعض المحارف (مثل <code>< > : " / \ | ? *‎</code>) محجوزةً في ويندوز كما أشير إلى ذلك التوثيق «تسمية الملفات، والمسارات، ومجالات الأسماء». في نظام الملفات NTFS، إن احتوى اسم الملف نقطتين رأسيتين، فستفتح Node.js مجرًى في نظام الملفات كما موضح في هذه الصفحة.
يقرأ هذا التابع كامل محتوى الملف ذي المسار <code>path‎</code> بشكل غير متزامن.
===<code>fsPromises.readdir(path[, options])‎</code>===
يُقبَل الكائن <code>Promise‎</code> مع محتوى الملف. إن لم يُحدَّد أي ترميز (باستعمال <code>options.encoding‎</code>)، فسيكون نوع البيانات المعادة هو كائنٌ من النوع <code>Buffer‎</code>. أمَّا إن حُدِّد الترميز، فستوضع البيانت المعادة في سلسلة نصية.
{| class="wikitable mw-collapsible"
إن كان الوسيط <code>options‎</code> سلسلة نصية، فسيُحدِّد حينئذٍ  الترميز.
|+سجل التغييرات
عندما يكون المسار <code>path‎</code> مجلدًا، سيختلف سلوك التابع <code>fsPromises.readFile()‎</code> اعتمادًا على المنصة المستعملة؛ في أنظمة التشغيل macOS، ولينكس، وويندوز، سيؤدي ذلك إلى رفض الكائن <code>Promise‎</code> مع خطأ. أمَّا في FreeBSD، فسيعاد تمثيلٌ بمحتوى المجلد.
!الإصدار
يجب على مقبض الملف <code>FileHandle‎</code> المعطى أن يدعم عملية القراءة.
!التغييرات
=== <code>fsPromises.readlink(path[, options])‎</code> ===
|-
|v10.10.0
|أضيف الخيار <code>withFileTypes‎</code>.
|-
|v10.0.0
|أضيف هذا التابع.
|}
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
**<code>encoding</code>:‏ [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>'utf8'</code>.
**<code>withFileTypes</code>:‏ [[JavaScript/Boolean|<boolean>]] القيمة الافتراضية هي: <code>false‎</code>.
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يقرأ هذا التابع محتوى المجلد المعطى بشكل غير متزامن ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع مصفوفة تحوي أسماء الملفات في المجلد باستثناء المجلد <code>'.'‎</code> والمجلد <code>'..'‎</code>. يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله لأسماء الملفات الممرَّرة إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'</code>، فستُمرَّر أسماء الملفات المعادة ككائنات من النوع <code>[[Node.js/buffer|Buffer‎]]</code>. إن ضُبِط الخيار <code>options.withFileTypes‎</code> إلى القيمة <code>true‎</code>، فستحوي المصفوفة <code>files‎</code> الكائنات <code>[[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.Dirent.E2.80.8E|fs.Dirent‎]]</code>.
===<code>fsPromises.readFile(path[, options])‎</code>===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<integer>]] اسمُ أو مقبض (<code>FileHandle‎</code>) ملفٍ.
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>null</code>.
* القيم المعادة:‏ <Promise>
**<code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على قسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'r'</code>.
يقرأ هذا التابع محتوى الوصلة الرمزية ذات المسار <code>path‎</code> عبر استدعاء الدالة <code>readlink(2)‎</code> بشكل غير متزامن. يُقبَل الكائن <code>Promise‎</code> مع محتوى الوصلة <code>linkString‎</code> عند نجاح العملية.
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع مسار الوصلة المعاد. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'‎</code>، فسيُمرَّر مسار الوصلة المعاد ككائن من النوع <code>Buffer‎</code>.
يقرأ هذا التابع كامل محتوى الملف ذي المسار <code>path‎</code> بشكل غير متزامن. يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع محتوى الملف. إن لم يُحدَّد أي ترميز (باستعمال <code>options.encoding‎</code>)، فسيكون نوع البيانات المعادة هو كائنٌ من النوع <code>[[Node.js/buffer|Buffer‎]]</code>. أمَّا إن حُدِّد الترميز، فستوضع البيانات المعادة في سلسلة نصية. إن كان الوسيط <code>options‎</code> سلسلة نصية، فسيُحدِّد حينئذٍ  الترميز. عندما يكون المسار <code>path‎</code> مجلدًا، سيختلف سلوك التابع <code>fsPromises.readFile()‎</code> اعتمادًا على المنصة المستعملة؛ في أنظمة التشغيل macOS، ولينكس، وويندوز، سيؤدي ذلك إلى رفض الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع خطأ. أمَّا في FreeBSD، فسيعاد تمثيلٌ بمحتوى المجلد. يجب على مقبض الملف [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 FileHandle.E2.80.8E|<code>FileHandle‎</code>]] المعطى أن يدعم عملية القراءة.
 
===<code>fsPromises.readlink(path[, options])‎</code>===
=== <code>fsPromises.realpath(path[, options])‎</code> ===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏
* <code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
** <code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يحدِّد هذا التابع الموضع الحقيقي للمسار <code>path‎</code> باستعمال نفس الدلالات التي يستعملها التابع <code>fs.realpath.native()‎</code> ثم يقبل الكائن <code>Promise‎</code> المسار المستبين.
يقرأ هذا التابع محتوى الوصلة الرمزية ذات المسار <code>path‎</code> عبر استدعاء الدالة <code>[http://man7.org/linux/man-pages/man2/readlink.2.html readlink(2)]‎</code> بشكل غير متزامن. يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع محتوى الوصلة <code>linkString‎</code> عند نجاح العملية. يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع مسار الوصلة المعاد. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'</code>، فسيُمرَّر مسار الوصلة المعاد ككائن من النوع [[Node.js/buffer|<code>Buffer‎</code>]].
المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزة بالترميز UTF8 فقط.
===<code>fsPromises.realpath(path[, options])</code>===
يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع المسار. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'</code>، فسيُمرَّر المسار المعاد ككائن من النوع <code>Buffer‎</code>.
في لينكس، عندما تُربَط Node.js مع المكتبة musl libc، يجب أن يوصل (mount) نظام الملفات procfs في <code>/proc‎</code> لكي يعمل هذا التابع بشكل صحيح. أما المكتبة glibc، فلا تشترط ذلك.
=== <code>fsPromises.rename(oldPath, newPath)</code> ===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>oldPath</code>:[[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>path</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>newPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>options</code>:‏ [[JavaScript/String|<string>]] ‏| [[JavaScript/Object|<Object>]]
* القيم المعادة:‏ <Promise>
**<code>encoding</code>:‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>.
يغيِّر هذا التابع اسم الملف <code>oldPath‎</code> إلى <code>newPath‎</code> المعطى بشكل غير متزامن ثم يقبل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
=== <code>fsPromises.rmdir(path)</code> ===
يحدِّد هذا التابع الموضع الحقيقي للمسار <code>path‎</code> باستعمال نفس الدلالات التي يستعملها التابع <code>fs.realpath.native()‎</code> ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] المسار المستبين. المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزة بالترميز UTF8 فقط. يمكن أن يكون الوسيط <code>options‎</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding‎</code> التي تحدِّد ترميز المحارف المراد استعماله مع المسار. إن ضُبطَت الخاصية <code>encoding‎</code> إلى القيمة <code>'buffer'</code>، فسيُمرَّر المسار المعاد ككائن من النوع [[Node.js/buffer|<code>Buffer‎</code>]]. في لينكس، عندما تُربَط Node.js مع المكتبة musl libc، يجب أن يوصل (mount) نظام الملفات procfs في ‎<code>/proc‎</code> لكي يعمل هذا التابع بشكل صحيح. أما المكتبة glibc، فلا تشترط ذلك.
===<code>fsPromises.rename(oldPath, newPath)</code>===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>oldPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* القيم المعادة:‏ <Promise>
*<code>newPath</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
يحذف هذا التابع المجلد ذا المسار <code>path‎</code> ثم يقبل الكائن <code>Promise‎</code> دون أية وسائط عند نجاح العملية.
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يؤدي استعمال التابع <code>fsPromises.rmdir()‎</code> مع ملف (وليس مجلد) إلى رفض الكائن <code>Promise‎</code> مع الخطأ <code>ENOENT‎</code> في ويندوز والخطأ <code>ENOTDIR‎</code> في أنظمة POSIX.
يغيِّر هذا التابع اسم الملف <code>oldPath‎</code> إلى <code>newPath‎</code> المعطى بشكل غير متزامن ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية.
=== <code>fsPromises.stat(path[, options])</code> ===
===<code>fsPromises.rmdir(path)</code>===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
سجل التغييرات
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
 
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
الإصدار
يحذف هذا التابع المجلد ذا المسار <code>path‎</code> ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أية وسائط عند نجاح العملية. يؤدي استعمال التابع <code>fsPromises.rmdir()‎</code> مع ملف (وليس مجلد) إلى رفض الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع الخطأ <code>ENOENT‎</code> في ويندوز والخطأ <code>ENOTDIR‎</code> في أنظمة POSIX.
التغييرات
===<code>fsPromises.stat(path[, options])‎</code>===
v10.5.0
{| class="wikitable mw-collapsible"
يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
|+سجل التغييرات
v10.0.0
!الإصدار
أضيف هذا التابع.
!التغييرات
 
|-
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
|v10.5.0
* <code>options</code>:‏ [[JavaScript/Object|<Object>]]
|يقبل التابع كائن <code>options‎</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع <code>bigint</code>.
** <code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
|-
* القيم المعادة:‏ <Promise>
|v10.0.0
يجلب هذا التابع معلومات حول الملف ذي المسار <code>path‎</code> بشكل غير متزامن ثم يقبل الكائن <code>Promise‎</code> مع الكائن <code>fs.Stats‎</code> لذاك الملف.
|أضيف هذا التابع.
=== <code>fsPromises.symlink(target, path[, type])</code> ===
|}
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>options</code>:‏ [[JavaScript/Object|<Object>]]
**<code>bigint</code>:‏ [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats‎</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false‎</code>.
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يجلب هذا التابع معلومات حول الملف ذي المسار <code>path‎</code> بشكل غير متزامن ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] مع الكائن <code>fs.Stats‎</code> لذاك الملف.
===<code>fsPromises.symlink(target, path[, type])</code>===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>target</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>target</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>type</code>:‏ [[JavaScript/String|<string>]]‏ القيمة الافتراضية هي: <code>'file'</code>.
*<code>type</code>:‏ [[JavaScript/String|<string>]]‏ القيمة الافتراضية هي: <code>'file'</code>.
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
ينشئ هذا التابع وصلة رمزيَّةً للملف المحدد بالمسار <code>target‎</code> بشكل غير متزامن ثم يقبل الكائن <code>Promise‎</code> دون أي وسائط عند نجاح العملية.
ينشئ هذا التابع وصلة رمزيَّةً للملف المحدد بالمسار <code>target‎</code> بشكل غير متزامن ثم يقبل الكائن <code>Promise‎</code> دون أي وسائط عند نجاح العملية. يمكن ضبط الوسيط <code>type‎</code> إلى القيمة <code>'dir'</code>، أو <code>'file'</code>، أو <code>'junction'</code> وهو متاح في ويندوز فقط (يُتجاهل في المنصات الأخرى). تتطلب نقاط الوصل (junction points) في ويندوز أن يكون المسار الهدف مطلقًا. عند استعمال <code>'junction'</code>، سيحول الوسيط <code>target‎</code> تلقائيًّا إلى مسار مطلق.
يمكن ضبط الوسيط <code>type‎</code> إلى القيمة <code>'dir'</code>، أو <code>'file'</code>، أو <code>'junction'</code> وهو متاح في ويندوز فقط (يُتجاهل في المنصات الأخرى). تتطلب نقاط الوصل (junction points) في ويندوز أن يكون المسار الهدف مطلقًا. عند استعمال <code>'junction'</code>، سيحول الوسيط <code>target‎</code> تلقائيًّا إلى مسار مطلق.
===<code>fsPromises.truncate(path[, len])</code>===
=== <code>fsPromises.truncate(path[, len])</code> ===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>len</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0‎</code>.
*<code>len</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0‎</code>.
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يقطع هذا التابع الملف ذا المسار <code>path</code> إلى الحجم <code>len‎</code> ثم يقبل الكائن <code>Promise‎</code> دون أي وسائط عند نجاح العملية. يجب أن يكون المسار <code>path‎</code> سلسلة نصية أو كائنًا من النوع <code>Buffer‎</code>.
يقطع هذا التابع الملف ذا المسار <code>path</code> إلى الحجم <code>len‎</code> ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أي وسائط عند نجاح العملية. يجب أن يكون المسار <code>path‎</code> سلسلة نصية أو كائنًا من النوع <code>Buffer‎</code>.
=== <code>fsPromises.unlink(path)</code> ===
===<code>fsPromises.unlink(path)</code>===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>path</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يزيل هذا التابع ملفًا أو وصلةً رمزيةً عبر تنفيذ الدالة <code>unlink(2)</code> بشكل غير متزامن ثم يقبل الكائن <code>Promise‎</code> دون أي وسائط عند نجاح العملية.
يزيل هذا التابع ملفًا أو وصلةً رمزيةً عبر تنفيذ الدالة <code>[http://man7.org/linux/man-pages/man2/unlink.2.html unlink(2)‎]</code> بشكل غير متزامن ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أي وسائط عند نجاح العملية.
=== <code>fsPromises.utimes(path, atime, mtime)</code> ===
===<code>fsPromises.utimes(path, atime, mtime)</code>===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
*<code>filename</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]
* <code>atime</code>:‏ [[JavaScript/Number|<number>]]‏ | [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
*<code>atime</code>:‏ [[JavaScript/Number|<number>]]‏ | [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
* <code>mtime</code>:‏ [[JavaScript/Number|<number>]] ‏| [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
*<code>mtime</code>:‏ [[JavaScript/Number|<number>]] ‏| [[JavaScript/String|<string>]]‏ | [[JavaScript/Date|<Date>]]
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار <code>path‎</code> المعطى بشكل غير متزامن ثم يقبل الكائن <code>Promise‎</code> دون أي وسائط عند نجاح العملية.
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار <code>path‎</code> المعطى بشكل غير متزامن ثم يقبل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أي وسائط عند نجاح العملية. يخضع الوسيطان <code>atime‎</code> و <code>mtime‎</code> إلى القاعدتين التاليتين:
يخضع الوسيطان <code>atime‎</code> و <code>mtime‎</code> إلى القاعدتين التاليتين:
*يمكن أن تكون القيم إما أعدادًا تمثل الوقت في توقيت يونكس (Unix epoch time)، أو تواريخ، أو سلاسل نصية عددية مثل <code>'123456789.0'‎</code>.
* يمكن أن تكون القيم إما أعدادًا تمثل الوقت في توقيت يونكس (Unix epoch time)، أو تواريخ، أو سلاسل نصية عددية مثل <code>'123456789.0'‎</code>.
*إن لم يكن بالإمكان تحويل القيمة إلى عددٍ، أو كانت <code>NaN‎</code> أو <code>Infinity‎</code> أو <code>Infinity‎-</code>، فسيُرمَى خطأٌ.
* إن لم يكن بالإمكان تحويل القيمة إلى عددٍ، أو كانت <code>NaN‎</code> أو <code>Infinity‎</code> أو <code>-Infinity‎</code>، فسيُرمَى خطأٌ.
===<code>fsPromises.writeFile(file, data[, options])</code>===
=== <code>fsPromises.writeFile(file, data[, options])</code> ===
أضيف في الإصدار: v10.0.0.
أضيف في الإصدار: v10.0.0.
* <code>file</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9_.D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86_.D8.A7.D9.84.D9.88.D9.8A.D8.A8_.D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<integer>]] اسم أو مقبض (<code>FileHandle‎</code>) الملف.
*<code>file</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]]‏ | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8.A9 .D8.B9.D9.86.D8.A7.D9.88.D9.8A.D9.86 .D8.A7.D9.84.D9.88.D9.8A.D8.A8 .D8.A7.D9.84.D8.AD.D8.AF.D9.8A.D8.AB.D8.A9|<URL>]]‏ | [[JavaScript/Number|<integer>]] اسم أو مقبض ([[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 FileHandle.E2.80.8E|<code>FileHandle‎</code>]]) الملف.
* <code>data</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]] ‏| [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]]
*<code>data</code>:‏ [[JavaScript/String|<string>]]‏ | [[Node.js/buffer|<Buffer>]] ‏| [[JavaScript/TypedArray|<TypedArray>]]‏ | [[JavaScript/DataView|<DataView>]]
* <code>options</code>:‏ [[JavaScript/Object|<Object>]] ‏| [[JavaScript/String|<string>]]
*<code>options</code>:‏ [[JavaScript/Object|<Object>]] ‏| [[JavaScript/String|<string>]]
** <code>encoding</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'‎</code>.
**<code>encoding</code>:‏‏ [[JavaScript/String|<string>]]‏ | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'‎</code>.
** <code>mod</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
**<code>mod</code>:‏ [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666‎</code>.
** <code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي: <code>'w'</code>.
**<code>flag</code>:‏ [[JavaScript/String|<string>]] اطلع على القسم «<nowiki/>[[Node.js/fs#.D8.B1.D8.A7.D9.8A.D8.A7.D8.AA .D9.86.D8.B8.D8.A7.D9.85 .D8.A7.D9.84.D9.85.D9.84.D9.81.D8.A7.D8.AA|دعم رايات نظام الملفات]]». القيمة الافتراضية هي: <code>'w'</code>.
* القيم المعادة:‏ <Promise>
*القيم المعادة:‏ [[JavaScript/Promise|<Promise>]]
يكتب هذا التابع البيانات الموجودة في الوسيط <code>data</code> في الملف <code>file</code> المعطى بشكل غير متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يمكن أن يكون الوسيط <code>data‎</code> سلسلةً نصيةً أو مخزنًا مؤقتًا في الذاكرة (buffer). يُقبَل الكائن <code>Promise‎</code> دون أي وسائط عند نجاح العملية.
يكتب هذا التابع البيانات الموجودة في الوسيط <code>data</code> في الملف <code>file</code> المعطى بشكل غير متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يمكن أن يكون الوسيط <code>data‎</code> سلسلةً نصيةً أو مخزنًا مؤقتًا في الذاكرة (buffer). يُقبَل الكائن [[JavaScript/Promise|<code>Promise‎</code>]] دون أي وسائط عند نجاح العملية. سيُتجاهَل الخيار <code>encoding‎</code> إن كان الوسيط <code>data‎</code> مخزنًا مؤقتًا. إن كان الوسيط <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز. يجب على مقبض الملف [[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 FileHandle.E2.80.8E|<code>FileHandle‎</code>]] المعطى أن يدعم عملية الكتابة على الملف. إنه من غير الآمن استدعاء التابع <code>fsPromises.writeFile()‎</code> عدة مرات مع نفس الملف دون انتظار قبول الكائن [[JavaScript/Promise|<code>Promise‎</code>]] (أو رفضه).
سيُتجاهَل الخيار <code>encoding‎</code> إن كان الوسيط <code>data‎</code> مخزنًا مؤقتًا.  
==الثوابت المستعملة في الوحدة <code>fs‎</code>==
إن كان الوسيط <code>options‎</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز.
يمكن تصدير الثوابت الموجودة في هذا القسم عبر استدعاء <code>fs.constants‎</code>. انتبه إلى أنه لن تكون جميع الثوابت متاحةً على جميع أنظمة التشغيل.
يجب على مقبض الملف <code>FileHandle‎</code> المعطى أن يدعم عملية الكتابة على الملف.
===ثوابت الوصول للملف===
إنه من غير الآمن استدعاء التابع <code>fsPromises.writeFile()‎</code> عدة مرات مع نفس الملف دون انتظار قبول الكائن <code>Promise‎</code> (أو رفضه).
تستخدم الثوابت التالية مع التابع <code>[[Node.js/fs#fs.access.28path.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.access()‎]]</code>:
==الثوابت المستعملة في الوحدة <code>fs‎</code> ==
{| class="wikitable"
يمكن تصدير الثوابت الموجودة في هذا القسم عبر استدعاء <code>fs.constants‎</code>.
!الثابت
انتبه إلى أنه لن تكون جميع الثوابت متاحةً على جميع أنظمة التشغيل.
!الوصف
|-
|<code>F_OK</code>
|رايةٌ تشير إلى أن الملف ظاهرٌ للعملية المستدعاة. هذا مفيدٌ لتحديد إن كان الملف موجودًا أم ولا، ولكنه لا يفيد بتحديد أذوناته.


=== ثوابت الوصول للملف ===
تستخدم الثوابت التالية مع التابع <code>fs.access()‎</code>:
الثابت
الوصف
F_OK
رايةٌ تشير إلى أن الملف ظاهرٌ للعملية المستدعاة. هذا مفيدٌ لتحديد إن كان الملف موجودًا أم ولا، ولكنه لا يفيد بتحديد أذوناته.
هذا الثابت هو القيمة الافتراضية المستعملة عند عدم تحديد أي ثابت.
هذا الثابت هو القيمة الافتراضية المستعملة عند عدم تحديد أي ثابت.
R_OK
|-
رايةٌ تشير إلى أنَّ الملف قابل للقراءة من قبل العملية المستدعاة.
|<code>R_OK</code>
W_OK
|رايةٌ تشير إلى أنَّ الملف قابل للقراءة من قبل العملية المستدعاة.
رايةٌ تشير إلى أنَّ الملف قابل للكتابة من قبل العملية المستدعاة.
|-
X_OK
|<code>W_OK</code>
رايةٌ تشير إلى أنَّ الملف قابل للتنفيذ من قبل العملية المستدعاة. ليس لهذه الراية أي تأثير في ويندوز (ستسلك نفس سلوك الراية <code>fs.constants.F_OK‎</code>).
|رايةٌ تشير إلى أنَّ الملف قابل للكتابة من قبل العملية المستدعاة.
=== ثوابت نسخ الملف ===
|-
تستخدم الثوابت التالية مع التابع <code>fs.copyFile()‎</code>:
|<code>X_OK</code>
|رايةٌ تشير إلى أنَّ الملف قابل للتنفيذ من قبل العملية المستدعاة. ليس لهذه الراية أي تأثير في ويندوز (ستسلك نفس سلوك الراية <code>fs.constants.F_OK</code>).
|}


الثابت
===ثوابت نسخ الملف===
الوصف
تستخدم الثوابت التالية مع التابع <code>[[Node.js/fs#fs.copyFile.28src.2C dest.5B.2C flags.5D.2C callback.29.E2.80.8E|fs.copyFile()]]‎</code>:
COPYFILE_EXCL
{| class="wikitable"
ستفشل عملية النسخ مع خطأ إن كان الملف موجودًا من قبل في المسار الوجهة المراد إنشاء نسخة فيه.
!الثابت
COPYFILE_FICLONE
!الوصف
إن وُجِد، فستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستُستخدَم آلية النسخ التراجعي (fallback copy).
|-
COPYFILE_FICLONE_FORCE
|<code>COPYFILE_EXCL</code>
إن وُجِد، فستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستفشل عملية النسخ مع خطأ.
|ستفشل عملية النسخ مع خطأ إن كان الملف موجودًا من قبل في المسار الوجهة المراد إنشاء نسخة فيه.
|-
|<code>COPYFILE_FICLONE</code>
|إن وُجِد، فستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستُستخدَم آلية النسخ التراجعي (fallback copy).
|-
|<code>COPYFILE_FICLONE_FORCE</code>
|إن وُجِد، فستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستفشل عملية النسخ مع خطأ.
|}


=== ثوابت فتح الملف ===
===ثوابت فتح الملف===
تستخدم الثوابت التالية مع التابع <code>fs.open()‎</code>:
تستخدم الثوابت التالية مع التابع <code>[[Node.js/fs#fs.open.28path.2C flags.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.open()‎]]</code>:
{| class="wikitable"
!الثابت
!الوصف
|-
|<code>O_RDONLY</code>
|رايةٌ تشير إلى فتح الملف في نمط القراءة فقط.
|-
|<code>O_WRONLY</code>
|راية تشير إلى فتح الملف في نمط الكتابة فقط.
|-
|<code>O_RDWR</code>
|رايةٌ تشير إلى فتح الملف في نمط القراءة والكتابة فقط.
|-
|<code>O_CREAT</code>
|رايةٌ تشير إلى إنشاء الملف إن لم يكن موجودًا من قبل.
|-
|<code>O_EXCL</code>
|رايةٌ تشير إلى أن عملية فتح الملف يجب أن تفشل إن استعملت الراية وكان الملف موجودًا من قبل.
|-
|<code>O_NOCTTY</code>
|رايةٌ تشير إلى أنه إذا كان المسار يعرِّف جهازًا طرفيًّا (terminal device)، فيجب ألا يؤدي فتح المسار إلى جعل تلك الطرفية هي الطرفية المتحكمة بالعملية (إن لم تملك العملية واحدةً مسبقًا).
|-
|<code>O_TRUNC</code>
|رايةٌ تشير إلى أنه إذا كان الملف موجودًا وهو ملف طبيعي وفتح الملف بنجاح للكتابة فيه، فيجب أن يُقلَّص حجمه إلى الصفر.
|-
|<code>O_APPEND</code>
|رايةٌ تشير إلى أن البيانات ستضاف في نهاية الملف دومًا.
|-
|<code>O_DIRECTORY</code>
|رايةٌ تشير إلى أن العملية يجب أن تفشل إن كان المسار المعطى لا يمثِّل مجلدًا.
|-
|<code>O_NOATIME</code>
|رايةٌ تشير إلى أنه لن ينتج عن عملية الوصول إلى نظام الملفات من أجل القراءة تحديثَ معلومات الوقت <code>atime‎</code> المرتبط بالملف.


الثابت
الوصف
O_RDONLY
رايةٌ تشير إلى فتح الملف في نمط القراءة فقط.
O_WRONLY
راية تشير إلى فتح الملف في نمط الكتابة فقط.
O_RDWR
رايةٌ تشير إلى فتح الملف في نمط القراءة والكتابة فقط.
O_CREAT
رايةٌ تشير إلى إنشاء الملف إن لم يكن موجودًا من قبل.
O_EXCL
رايةٌ تشير إلى أن عملية فتح الملف يجب أن تفشل إن استعملت الراية وكان الملف موجودًا من قبل.
O_NOCTTY
رايةٌ تشير إلى أنه إذا كان المسار يعرِّف جهازًا طرفيًّا (terminal device)، فيجب ألا يؤدي فتح المسار إلى جعل تلك الطرفية هي الطرفية المتحكمة بالعملية (إن لم تملك العملية واحدةً مسبقًا).
O_TRUNC
رايةٌ تشير إلى أنه إذا كان الملف موجودًا وهو ملف طبيعي وفتح الملف بنجاح للكتابة فيه، فيجب أن يُقلَّص حجمه إلى الصفر.
O_APPEND
رايةٌ تشير إلى أن البيانات ستضاف في نهاية الملف دومًا.
O_DIRECTORY
رايةٌ تشير إلى أن العملية يجب أن تفشل إن كان المسار المعطى لا يمثِّل مجلدًا.
O_NOATIME
رايةٌ تشير إلى أنه لن ينتج عن عملية الوصول إلى نظام الملفات من أجل القراءة تحديثَ معلومات الوقت <code>atime‎</code> المرتبط بالملف.
هذه الراية متاحةٌ للاستعمال في أنظمة لينكس فقط.
هذه الراية متاحةٌ للاستعمال في أنظمة لينكس فقط.
O_NOFOLLOW
|-
رايةٌ تشير إلى أنه يجب ان تفشل العملية إن كان المسار يمثِّل وصلةً رمزيةً.
|<code>O_NOFOLLOW</code>
O_SYNC
|رايةٌ تشير إلى أنه يجب ان تفشل العملية إن كان المسار يمثِّل وصلةً رمزيةً.
رايةٌ تشير إلى أنه يُفتَح الملف من أجل الدخل والخرج المتزامن (synchronized I/O) مع انتظار عمليات الكتابة للحفاظ على سلامة الملف.
|-
O_DSYNC
|<code>O_SYNC</code>
رايةٌ تشير إلى أنه يُفتَح الملف من أجل الدخل والخرج المتزامن (synchronized I/O) مع انتظار عمليات الكتابة للحفاظ على سلامة البيانات.
|رايةٌ تشير إلى أنه يُفتَح الملف من أجل الدخل والخرج المتزامن (synchronized I/O) مع انتظار عمليات الكتابة للحفاظ على سلامة الملف.
O_SYMLINK
|-
رايةٌ تشير إلى فتح الوصلة الرمزية نفسها بدلًا من فتح المورد الذي تشير إليه.
|<code>O_DSYNC</code>
O_DIRECT
|رايةٌ تشير إلى أنه يُفتَح الملف من أجل الدخل والخرج المتزامن (synchronized I/O) مع انتظار عمليات الكتابة للحفاظ على سلامة البيانات.
عند استعمال هذه الراية، ستُجرَى محاولةٌ لتقليل تأثيرات التخزين المؤقت (caching) لدخل وخرج الملف (file I/O).
|-
O_NONBLOCK
|<code>O_SYMLINK</code>
رايةٌ تشير إلى فتح الملف في وضع عدم الحجز (nonblocking mode) إن أمكن ذلك.
|رايةٌ تشير إلى فتح الوصلة الرمزية نفسها بدلًا من فتح المورد الذي تشير إليه.
|-
|<code>O_DIRECT</code>
|عند استعمال هذه الراية، ستُجرَى محاولةٌ لتقليل تأثيرات التخزين المؤقت (caching) لدخل وخرج الملف (file I/O).
|-
|<code>O_NONBLOCK</code>
|رايةٌ تشير إلى فتح الملف في وضع عدم الحجز (nonblocking mode) إن أمكن ذلك.
|}


=== ثوابت نوع الملف ===
===ثوابت نوع الملف===
تستعمل الثوابت التالية الخاصية <code>mode‎</code> للكائن <code>fs.Stats‎</code> لتحديد نوع الملف.
تستعمل الثوابت التالية الخاصية <code>mode‎</code> للكائن <code>fs.Stats‎</code> لتحديد نوع الملف.
{| class="wikitable"
!الثابت
!الوصف
|-
|<code>S_IFMT</code>
|قناع بتِّي (bit make) يُستعمَل لاستخراج رمز نوع الملف.
|-
|<code>S_IFREG</code>
|ثابت نوع الملف من أجل ملف طبيعي (regular file).
|-
|<code>S_IFDIR</code>
|ثابت نوع الملف من أجل مجلد.
|-
|<code>S_IFCHR</code>
|ثابت نوع الملف من أجل ملف جهاز محرفي  التوجه (character-oriented device file).
|-
|<code>S_IFBLK</code>
|ثابت نوع الملف من أجل ملف جهاز كتلي التوجه (block-oriented device file).
|-
|<code>S_IFIFO</code>
|ثابت نوع الملف من أجل الأنبوب FIFO (اختصار للعبارة first-in-first-out أي «من دخل أولًا يخرج أولًا»، كما يدعى أحيانًا «أنبوبًا مسمًى»)
|-
|<code>S_IFLNK</code>
|ثابت نوع ملف من أجل وصلة رمزية.
|-
|<code>S_IFSOCK</code>
|ثابت نوع ملف من أجل مقبس.
|}


الثابت
===ثوابت نمط الملف===
الوصف
S_IFMT
قناع بتِّي (bit make) يُستعمَل لاستخراج رمز نوع الملف.
S_IFREG
ثابت نوع الملف من أجل ملف طبيعي (regular file).
S_IFDIR
ثابت نوع الملف من أجل مجلد.
S_IFCHR
ثابت نوع الملف من أجل ملف جهاز محرفي  التوجه (character-oriented device file).
S_IFBLK
ثابت نوع الملف من أجل ملف جهاز كتلي التوجه (block-oriented device file).
S_IFIFO
ثابت نوع الملف من أجل الأنبوب FIFO (اختصار للعبارة first-in-first-out أي «من دخل أولًا يخرج أولًا»، كما يدعى أحيانًا «أنبوبًا مسمًى»)
S_IFLNK
ثابت نوع ملف من أجل وصلة رمزية.
S_IFSOCK
ثابت نوع ملف من أجل مقبس.
 
=== ثوابت نمط الملف ===
تستعمل الثوابت التالية الخاصية <code>mode‎</code> للكائن <code>fs.Stats‎</code> لتحديد أذونات الوصول للملف.
تستعمل الثوابت التالية الخاصية <code>mode‎</code> للكائن <code>fs.Stats‎</code> لتحديد أذونات الوصول للملف.
{| class="wikitable"
!الثابت
!الوصف
|-
|<code>S_IRWXU</code>
|نمط ملف يشير إلى قابلية القراءة والكتابة والتنفيذ من قبل المالك.
|-
|<code>S_IRUSR</code>
|نمط ملف يشير إلى قابلة القراءة من قبل المالك.
|-
|<code>S_IWUSR</code>
|نمط ملف يشير إلى قابلية الكتابة من قبل المالك.
|-
|<code>S_IXUSR</code>
|نمط ملف يشير إلى قابلة التنفيذ من قبل المالك.
|-
|<code>S_IRWXG</code>
|نمط ملف يشير إلى قابلية القراءة والكتابة والتنفيذ من قبل المجموعة المالكة.
|-
|<code>S_IRGRP</code>
|نمط ملف يشير إلى قابلة القراءة من قبل المجموعة المالكة.
|-
|<code>S_IWGRP</code>
|نمط ملف يشير إلى قابلية الكتابة من قبل المجموعة المالكة.
|-
|<code>S_IXGRP</code>
|نمط ملف يشير إلى قابلة التنفيذ من قبل المجموعة المالكة.
|-
|<code>S_IRWXO</code>
|نمط ملف يشير إلى قابلية القراءة والكتابة والتنفيذ من قبل الآخرين.
|-
|<code>S_IROTH</code>
|نمط ملف يشير إلى قابلة القراءة من قبل الآخرين.
|-
|<code>S_IWOTH</code>
|نمط ملف يشير إلى قابلية الكتابة من قبل الآخرين.
|-
|<code>S_IXOTH</code>
|نمط ملف يشير إلى قابلة التنفيذ من قبل الآخرين.
|}


الثابت
==رايات نظام الملفات==
الوصف
S_IRWXU
نمط ملف يشير إلى قابلية القراءة والكتابة والتنفيذ من قبل المالك.
S_IRUSR
نمط ملف يشير إلى قابلة القراءة من قبل المالك.
S_IWUSR
نمط ملف يشير إلى قابلية الكتابة من قبل المالك.
S_IXUSR
نمط ملف يشير إلى قابلة التنفيذ من قبل المالك.
S_IRWXG
نمط ملف يشير إلى قابلية القراءة والكتابة والتنفيذ من قبل المجموعة المالكة.
S_IRGRP
نمط ملف يشير إلى قابلة القراءة من قبل المجموعة المالكة.
S_IWGRP
نمط ملف يشير إلى قابلية الكتابة من قبل المجموعة المالكة.
S_IXGRP
نمط ملف يشير إلى قابلة التنفيذ من قبل المجموعة المالكة.
S_IRWXO
نمط ملف يشير إلى قابلية القراءة والكتابة والتنفيذ من قبل الآخرين.
S_IROTH
نمط ملف يشير إلى قابلة القراءة من قبل الآخرين.
S_IWOTH
نمط ملف يشير إلى قابلية الكتابة من قبل الآخرين.
S_IXOTH
نمط ملف يشير إلى قابلة التنفيذ من قبل الآخرين.
 
== رايات نظام الملفات ==
الرايات التالية متاحة متى ما قبل الخيار <code>flag‎</code> أن يأخذ سلسلة نصية:
الرايات التالية متاحة متى ما قبل الخيار <code>flag‎</code> أن يأخذ سلسلة نصية:
* <code>'a'</code>: فتح الملف من أجل الإضافة (appending). سيُنشأ الملف إن لم يكون موجودًا.
*<code>'a'</code>: فتح الملف من أجل الإضافة (appending). سيُنشأ الملف إن لم يكون موجودًا.
* <code>'ax'</code>: شبيهةٌ بالراية <code>'a'</code> باستثناء أن العملية ستفشل إن كان الملف موجودًا.
*<code>'ax'</code>: شبيهةٌ بالراية <code>'a'</code> باستثناء أن العملية ستفشل إن كان الملف موجودًا.
* <code>'a+'</code>: فتح الملف للقراءة والإضافة. سيُنشَا الملف إن لم يكن موجودًا.
*<code>'a+'</code>: فتح الملف للقراءة والإضافة. سيُنشَا الملف إن لم يكن موجودًا.
* <code>'ax+'</code>: شبيهةٌ بالراية <code>'a+'</code> باستثناء أن العملية ستفشل إن كان الملف موجودًا.
*<code>'ax+'</code>: شبيهةٌ بالراية <code>'a+'</code> باستثناء أن العملية ستفشل إن كان الملف موجودًا.
* <code>'as'</code>: فتح الملف للإضافة في وضع التزامن (synchronous mode). سيُنشَأ الملف إن لم يكن موجودًا.
*<code>'‎as'</code>: فتح الملف للإضافة في وضع التزامن (synchronous mode). سيُنشَأ الملف إن لم يكن موجودًا.
* <code>'as+'</code>: فتح الملف للقؤاءة والإضافة في وضع التزامن. سيُنشَأ الملف إن لم يكن موجودًا.
*<code>'as+'</code>: فتح الملف للقراءة والإضافة في وضع التزامن. سيُنشَأ الملف إن لم يكن موجودًا.
* <code>'r'</code>: فتح الملف للقراءة. سيُطلَق استثناء إن لم يكن الملف موجودًا.
*<code>'r'</code>: فتح الملف للقراءة. سيُطلَق استثناء إن لم يكن الملف موجودًا.
* <code>'r+'</code>: فتح الملف للقراءة والكتابة. سيُطلَق استثناء إن لم يكن الملف موجودًا.
*<code>'r+'</code>: فتح الملف للقراءة والكتابة. سيُطلَق استثناء إن لم يكن الملف موجودًا.
* <code>'rs+'</code>: فتح الملف للقراءة والكتابة في وضع التزامن. سيُوجَّه نظام التشغيل لتجاوز التخزين المؤقت في نظام الملفات.
*<code>'rs+'</code>: فتح الملف للقراءة والكتابة في وضع التزامن. سيُوجَّه نظام التشغيل لتجاوز التخزين المؤقت في نظام الملفات.
الفائدة الأساسية في استعمال هذه الراية هي في فتح الملفات نظام الملفات NFS الموصول (mount)، إذ تسمح بتخطي ذاكرة التخزين المؤقتة المحلية (local cache) التي يحتمل أن تكون قديمة. إن لهذه الراية تأثير حقيقي كبير جدًا على أداء المدخلات والمخرجات (I/O)/ لذا لا يوصى باستعمال هذه الراية إلا عند الحاجة الماسَّة إليها.
الفائدة الأساسية في استعمال هذه الراية هي في فتح الملفات نظام الملفات NFS الموصول (mount)، إذ تسمح بتخطي ذاكرة التخزين المؤقتة المحلية (local cache) التي يحتمل أن تكون قديمة. إن لهذه الراية تأثير حقيقي كبير جدًا على أداء المدخلات والمخرجات (I/O)/ لذا لا يوصى باستعمال هذه الراية إلا عند الحاجة الماسَّة إليها. إن هذا لن يحول التابع <code>[[Node.js/fs#fs.open.28path.2C flags.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.open()‎]]</code> أو <code>[[Node.js/fs#fsPromises.open.28path.2C flags.5B.2C mode.5D.29|fsPromises.open()‎]]</code> إلى الاستدعاء الكتلي المتزامن (synchronous blocking call). إن كان من المستحسن استعمال عملية متزامنة، فيجب استعمال شيء شبيه بالتابع <code>[[Node.js/fs#.E2.80.8Efs.openSync.28path.2C flags.5B.2C mode.5D.29.E2.80.8E|fs.openSync()‎]]</code>.
إن هذا لن يحول التابع <code>fs.open()‎</code> أو <code>fsPromises.open()‎</code> إلى الاستدعاء الكتلي المتزامن (synchronous blocking call). إن كان من المستحسن استعمال عملية متزامنة، فيجب استعمال شيء شبيه بالتابع <code>fs.openSync()‎</code>.
*<code>'w'</code>: فتح الملف للكتابة. سيُنشَأ الملف إن لم يكن موجودًا أو سيُقتطَع إن كان موجودًا.
* <code>'w'</code>: فتح الملف للكتابة. سيُنشَأ الملف إن لم يكن موجودًا أو سيُقتطَع إن كان موجودًا.
*<code>'wx'</code>: شبيهةٌ بالراية <code>'w'</code> باستثناء أن العملية ستفشل إن ان الملف موجودًا.
* <code>'wx'</code>: شبيهةٌ بالراية <code>'w'</code> باستثناء أن العملية ستفشل إن ان الملف موجودًا.
*<code>'w+'</code>: فتح الملف للقراءة والكتابة. سيُنشَأ الملف إن لم يكن موجودًا أو سيُقتطَع إن كان موجودًا.
* <code>'w+'</code>: فتح الملف للقراءة والكتابة. سيُنشَأ الملف إن لم يكن موجودًا أو سيُقتطَع إن كان موجودًا.
*<code>'wx+'</code>: شبيهةٌ بالراية <code>'w+'</code> باستثناء أن العملية ستفشل إن كان الملف موجودًا.
* <code>'wx+'</code>: شبيهةٌ بالراية <code>'w+'</code> باستثناء أن العملية ستفشل إن كان الملف موجودًا.
يمكن أن يكون الخيار <code>flag‎</code> عددًا أيضًا كما هو مذكور في توثيق الدالة <code>[http://man7.org/linux/man-pages/man2/open.2.html open(2)‎]</code>. الثوابت ذات الاستعمال الشائع متاحةٌ عبر استدعاء <code>fs.constants‎</code>. في ويندوز، تحول الرايات إلى ما يقابلها أينما أمكن ذلك مثل تحويل <code>O_WRONLY‎</code> إلى <code>FILE_GENERIC_WRITE‎</code> أو تحويل <code>O_EXCL|O_CREAT‎</code> إلى <code>CREATE_NEW‎</code>  لتُقبَل عبر <code>CreateFileW‎</code>. تتأكد الراية <code>'x'</code> (هي الراية <code>O_EXCL‎</code> في <code>[http://man7.org/linux/man-pages/man2/open.2.html open(2)]‎</code>) أن المسارات قد أُنشئَت حديثًا. في أنظمة POSIX، يعد مسارٌ موجودًا حتى إن كان وصلةً رمزيةً تشير إلى ملف غير موجود. الراية <code>'x'</code> قد تعمل أو قد لا تعمل مع أنظمة ملفات الشبكة. في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط <code>position‎</code> وستضيف البيانات إلى نهاية الملف دومًا. تعديل ملف بدلًا من استبداله قد يتطلَّب فتحه في الوضع <code>'r+'</code> بدلًا من الوضع <code>'w'</code> الافتراضي. يعتمد سلوك بعض الرايات على المنصة المستعملة آنذاك. بناءً على ذلك، سيعيد فتح مجلدٍ في نظام التشغيل maxOS أو لينكس مع الراية <code>'a+'</code> خطأً (انظر المثال الآتي). في المقابل، سيعاد واصف ملف أو مقبص الملف <code>[[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 FileHandle.E2.80.8E|FileHandle‎]]</code> في ويندوز و FreeBSD.<syntaxhighlight lang="javascript">
يمكن أن يكون الخيار <code>flag‎</code> عددًا أيضًا كما هو مذكور في توثيق الدالة <code>open(2)‎</code>. الثوابت ذات الاستعمال الشائع متاحةٌ عبر استدعاء <code>fs.constants‎</code>. في ويندوز، تحول الرايات إلى ما يقابلها أينما أمكن ذلك مثل تحويل <code>O_WRONLY‎</code> إلى <code>FILE_GENERIC_WRITE‎</code> أو تحويل <code>O_EXCL|O_CREAT‎</code> إلى <code>CREATE_NEW‎</code>  لتُقبَل عبر <code>CreateFileW‎</code>.
تتأكد الراية <code>'x'</code> (هي الراية <code>O_EXCL‎</code> في <code>open(2)‎</code>) أن المسارات قد أُنشئَت حديثًا. في أنظمة POSIX، يعد مسارٌ موجودًا حتى إن كان وصلةً رمزيةً تشير إلى ملف غير موجود. الراية <code>'x'</code> قد تعمل أو قد لا تعمل مع أنظمة ملفات الشبكة.
في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط <code>position‎</code> وستضيف البيانات إلى نهاية الملف دومًا.
تعديل ملف بدلًا من استبداله قد يتطلَّب فتحه في الوضع <code>'r+'</code> بدلًا من الوضع <code>'w'</code> الافتراضي.
يعتمد سلوك بعض الرايات على المنصة المستعملة آنذاك. بناءً على ذلك، سيعيد فتح مجلدٍ في نظام التشغيل maxOS أو لينكس مع الراية <code>'a+'</code> خطأً (انظر المثال الآتي). في المقابل، سيعاد واصف ملف أو مقبص الملف <code>FileHandle‎</code> في ويندوز و FreeBSD.
<syntaxhighlight lang="javascript">
// macOS and Linux
// macOS and Linux
fs.open('<directory>', 'a+', (err, fd) => {
fs.open('<directory>', 'a+', (err, fd) => {
سطر 2٬855: سطر 2٬980:
   // => null, <fd>
   // => null, <fd>
});
});
</syntaxhighlight>
</syntaxhighlight>في ويندوز، ستفشل عملية فتح ملف موجود مخفي باستعمال الراية <code>'w'</code> (سواءً عبر التابع <code>[[Node.js/fs#fs.open.28path.2C flags.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.open()‎]]</code> أو التابع <code>[[Node.js/fs#fs.writeFile.28file.2C data.5B.2C options.5D.2C callback.29.E2.80.8E|fs.writeFile()‎]]</code> أو التابع <code>[[Node.js/fs#fsPromises.open.28path.2C flags.5B.2C mode.5D.29|fsPromises.open()‎]]</code>) مع الخطأ <code>EPERM‎</code>. يمكن فتح ملف موجود ولكنه مخفي من أجل الكتابة مع الراية <code>'r+'</code>. يمكن استعمال التابع <code>[[Node.js/fs#fs.ftruncate.28fd.5B.2C len.5D.2C callback.29.E2.80.8E|fs.ftruncate()‎]]</code> أو التابع <code>[[Node.js/fs#filehandle.truncate.28len.29|filehandle.truncate()]]‎</code> لمسح جميع محتويات الملف.
في ويندوز، ستفشل عملية فتح ملف موجود مخفي باستعمال الراية <code>'w'</code> (سواءً عبر التابع <code>fs.open()‎</code> أو التابع <code>fs.writeFile()‎</code> أو التابع <code>fsPromises.open()‎</code>) مع الخطأ <code>EPERM‎</code>. يمكن فتح ملف موجود ولكنه مخفي من أجل الكتابة مع الراية <code>'r+'</code>.
==مصادر==
يمكن استعمال التابع <code>fs.ftruncate()‎</code> أو التابع <code>filehandle.truncate()‎</code> لمسح جميع محتويات الملف.
*[https://nodejs.org/dist/latest-v10.x/docs/api/fs.html صفحة File System في توثيق Node.js الرسمي.]
== مصادر ==
[[تصنيف: Node.js|{{SUBPAGENAME}}]]
* صفحة File System في توثيق Node.js الرسمي.
[[تصنيف: Node.js]]

المراجعة الحالية بتاريخ 11:14، 23 أكتوبر 2018

الاستقرار: 2 - مستقر

توفِّر الوحدة fs‎ واجهةً برمجيةً للتعامل مع نظام الملفات بطريقة قريبة جدًا من دوال POSIX القياسية.

يمكن الوصول إلى هذه الوحدة باستعمال الأمر التالي:

const fs = require('fs');

جميع عمليات نظام الملفات لها أشكال متزامنة وغير متزامنة. تأخذ الأشكال المتزامنة دالة رد نداء مكملة دومًا وتُمرَّر إليها كآخر وسيط. تعتمد الوسائط المُمرَّرة إلى دالة رد النداء المكملة تلك على التابع نفسه، ولكن الوسيط الأول فيها محجوزٌ دومًا للاستثناء. إن اكتملت العملية بنجاح، فستكون قيمة هذا الوسيط null‎ أو undefined‎.

const fs = require('fs');

fs.unlink('/tmp/hello', (err) => {
  if (err) throw err;
  console.log('successfully deleted /tmp/hello');
});

تُرمَى الاستثناءات التي تحدث باستعمال العمليات المتزامنة مباشرةً وقد تُعالَج باستعمال العبارة try...catch‎، أو ربما يُسمَح لها بالانتشار للأعلى (bubble up).

const fs = require('fs');

try {
  fs.unlinkSync('/tmp/hello');
  console.log('successfully deleted /tmp/hello');
} catch (err) {
  // عالج الخطأ هنا
}

لا يوجد أي ترتيب مضمون عند استعمال توابع غير متزامنة. بناءً على ذلك، هنالك احتمالٌ كبير أن يحصل خطأ في المثال التالي لأنَّ العملية fs.stat()‎ قد تكتمل قبل العملية fs.rename()‎:

fs.rename('/tmp/hello', '/tmp/world', (err) => {
  if (err) throw err;
  console.log('renamed complete');
});
fs.stat('/tmp/world', (err, stats) => {
  if (err) throw err;
  console.log(`stats: ${JSON.stringify(stats)}`);
});

لتنفيذ المثال بالشكل والترتيب الصحيح للعمليات، انقل الاستدعاء fs.stat() إلى داخل رد النداء للعملية fs.rename():

fs.rename('/tmp/hello', '/tmp/world', (err) => {
  if (err) throw err;
  fs.stat('/tmp/world', (err, stats) => {
    if (err) throw err;
    console.log(`stats: ${JSON.stringify(stats)}`);
  });
});

في العمليات المشغولة، يُوصَى المبرمج بشدة باستخدام الاصدارات غير المتزامنة من هذه الاستدعاءات، إذ ستحجب الإصدارات المتزامنة كامل العملية حتى تكمل أو توقف جميع اتصالاتها.

لمَّا كانت أغلب دوال الوحدة fs‎ تسمح بحذف وسيط رد النداء، فإنَّ هذا السلوك غير مُستحسَن مطلقًا، إذ تُستخدَم دالة رد النداء الافتراضية، في أبسط الحالات، في معالجة الأخطاء المرمية وهنا تكمن فائدتها. للحصول على متعقِّب لموقع الاستدعاء الأصلي، اضبط متغير البيئة NODE_DEBUG‎.

أُهملَت عملية حذف دالة رد النداء في دوال الوحدة fs‎ الغير متزامنة، وقد يؤدي فعل ذلك إلى رمي خطأ في المستقبل.

$ cat script.js
function bad() {
  require('fs').readFile('/');
}
bad();

$ env NODE_DEBUG=fs node script.js
fs.js:88
        throw backtrace;
        ^
Error: EISDIR: illegal operation on a directory, read
    <stack trace.>

مسارات الملف (File paths)

تقبل أغلب عمليات fs‎ تمرير مسارات لملفات إليها في شكل سلسلة نصية، أو كائن من النوع Buffer‎، أو النوع URL‎ باستعمال البروتوكول file:‎.

تُفسَّر المسارات التي توضع في سلاسل نصية كسلاسل من المحارف بترميز UTF-8 ممثلةً اسم الملف المطلق أو النسبي. ستُستبيَن المسارات النسبية نسبةً إلى مجلد العمل الحالي المحدَّد باستعمال process.cwd()‎.

اطلع على المثال التالي الذي يشرح كيفية استعمال مسار مطلق على نظام متوافق مع معيار POSIX:

const fs = require('fs');

fs.open('/open/some/file.txt', 'r', (err, fd) => {
  if (err) throw err;
  fs.close(fd, (err) => {
    if (err) throw err;
  });
});

اطلع على المثال التالي الذي يشرح كيفية استعمال مسار نسي (نسبةً إلى process.cwd()) على نظام متوافق مع معيار POSIX:

fs.open('file.txt', 'r', (err, fd) => {
  if (err) throw err;
  fs.close(fd, (err) => {
    if (err) throw err;
  });
});

تحديد المسارات باستعمال الكائنات Buffer‎ مفيدٌ جدًا خصوصًا على بعض أنظمة التشغيل المتوافقة مع POSIX التي تعامل مسارات الملفات كسلسلة مبهمة من البايتات. في بعض الأنظمة، يمكن لمسار ملف واحد أن يحوي سلاسل فرعية ترميز محارف كلِّ واحدة منها مختلفٌ عن الآخر. وكما هو الحال في مسارات السلاسل النصية، يمكن أن تكون المسارات المحتواة في الكائنات Buffer‎ نسبيةً أو مطلقةً. اطلع على المثال التالي الذي يشرح كيفية استعمال مسار مطلق على نظام متوافق مع معيار POSIX:

fs.open(Buffer.from('/open/some/file.txt'), 'r', (err, fd) => {
  if (err) throw err;
  fs.close(fd, (err) => {
    if (err) throw err;
  });
});

في ويندوز، تتبنى Node.js مفهوم «مجلد العمل لكل قرص» (per-drive working directory). يمكن ملاحظة هذا السلوك عند استعمال مسار قرص دون محرف الخط المائل العكسي \‎. على سبيل المثال، يمكن أن يعيد الاستدعاء fs.readdirSync('c:\\') نتيجةً مختلفةً عن الاستدعاء fs.readdirSync('c:')‎. للمزيد من المعلومات، اطلع على هذه الصفحة.

دعم الكائن URL‎

أضيف في الإصدار: v7.6.0.

في أغلب دوال الوحدة fs‎، قد يُمرَّر الوسيط path‎ والوسيط filename‎ ككائن من النوع URL‎ الذي يمثل عنوان URL متوافق مع المعيار WHATWG. الكائنات URL‎ التي تستعمل البروتوكول file:‎ مدعومةً فقط.

const fs = require('fs');
const fileUrl = new URL('file:///tmp/hello');

fs.readFileSync(fileUrl);

العناوين URL ذات البروتوكول file:‎ هي مسارات مطلقة دومًا.

قد يترافق استعمال الكائنات URL‎ -التي تمثل عناوين URL متوافقة مع المعيار WHATWG- سلوكيات محددة بحسب المنصة المستعملة.

في ويندوز، تحوَّل العناوين URL ذات البرتوكول file‎:‎ مع اسم المضيف (hosename) إلى مسارات UNC بينما تحول العناوين URL ذات البرتوكول file‎:‎ التي تحوي على محارف الأقراص إلى مسارات محلية مطلقة. أما العناوين URL ذات البروتوكول file‎:‎ التي لا تحوي اسم المضيف (hosename) ولا محرف قرص، فسيؤدي استعمالها إلى رمي خطأ. تفحَّص المثال التالي الذي يشرح ما سبق:

// :في ويندوز

// - UNC مع اسم المضيف إلى مسارات file‎: ذات البرتوكول URL تحوَّل العناوين 
// file://hostname/p/a/t/h/file => \\hostname\p\a\t\h\file
fs.readFileSync(new URL('file://hostname/p/a/t/h/file'));

// - مع محارف الأقراص إلى مسارات محلية مطلقة file‎: ذات البرتوكول URL تحوَّل العناوين
// file:///C:/tmp/hello => C:\tmp\hello
fs.readFileSync(new URL('file:///C:/tmp/hello'));

// - التي بدون اسم مضيف على محرف قرص file‎: ذات البروتوكول URL يجب أن تحوي العناوين
fs.readFileSync(new URL('file:///notdriveletter/p/a/t/h/file'));
fs.readFileSync(new URL('file:///c/p/a/t/h/file'));
// إذ يجب أن يكون مسار TypeError [ERR_INVALID_FILE_URL_PATH] سيرمى الخطأ 
// مطلقًا URL الملف الذي يمثله عنوان 
يجب على العناوين URL ذات البروتوكول <code>file:</code> التي تحوي محارف أقراصٍ استعمال المحرف <code>:‎</code> كفاصل بعد محرف القرص مباشرةً. سيؤدي استعمال محرف فاصل آخر إلى رمي خطأ.
في جميع المنصات الأخرى، العناوين URL ذات البروتوكول <code>file:</code> مع اسم مضيف غيرَ مدعومةٍ وسيؤدي استعمالها بهذا الشكل إلى رمي خطأ:
<syntaxhighlight lang="javascript">// :في المنصات الأخرى

// - مع اسم المضيف غير مدعومة file‎: ذات البروتوكول URL العناوين 
// file://hostname/p/a/t/h/file => !رمي خطأ
fs.readFileSync(new URL('file://hostname/p/a/t/h/file'));
// إذ يجب أن يكون العنوان مطلقًا TypeError [ERR_INVALID_FILE_URL_PATH] سيرمى الخطأ

// - إلى مسارات مطلقة file‎: ذات البرتوكول URL تحوَّل العناوين 
// file:///tmp/hello => /tmp/hello
fs.readFileSync(new URL('file:///tmp/hello'));

يؤدي استعمال العناوين URL ذات البروتوكول file‎:‎ التي تحوي محارف الخط المائل المرمزة إلى رمي خطأ في جميع المنصات:

// في ويندوز
fs.readFileSync(new URL('file:///C:/p/a/t/h/%2F'));
fs.readFileSync(new URL('file:///C:/p/a/t/h/%2f'));
// إذ لا يجب أن TypeError [ERR_INVALID_FILE_URL_PATH] سيرمى الخطأ
// الذي يمثل مسار ملف على المحارف \ أو / بعد ترميزها URL يحوي عنوان 

// POSIX في أنظمة
fs.readFileSync(new URL('file:///p/a/t/h/%2F'));
fs.readFileSync(new URL('file:///p/a/t/h/%2f'));
// إذ لا يجب أن TypeError [ERR_INVALID_FILE_URL_PATH] سيرمى الخطأ
// الذي يمثل مسار ملف على المحارف / بعد ترميزها URL يحوي عنوان

في ويندوز، سيؤدي استعمال العناوين URL ذات البروتوكول file‎:‎ التي تحوي محارف الخط المائل العكسي المرمزة إلى رمي خطأ:

// في ويندوز
fs.readFileSync(new URL('file:///C:/path/%5C'));
fs.readFileSync(new URL('file:///C:/path/%5c'));
// إذ لا يجب أن TypeError [ERR_INVALID_FILE_URL_PATH] سيرمى الخطأ
// الذي يمثل مسار ملف على المحارف \ أو / بعد ترميزها URL يحوي عنوان

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

في الأنظمة المتوافقة مع POSIX، تحتفظ النواة بجدول للملفات والموارد المفتوحة حاليًا لكل عملية. يُسنَد كل ملف مفتوح إلى إلى معرِّف عددي بسيط يدعى «واصف الملف» (file descriptor). إن تحدثنا على مستوى النظام، نجد أنَّ جميع عمليات نظام الملفات تستعمل واصفات الملفات هذه لتحدِّد وتتتبَّع كل ملف بعينه. يستعمل نظام ويندوز طريقةً مختلفةً ولكنها شبيهة نظريًا بالآلية التي ذكرناها لتعقُّب الموارد. لتبسيط الأشياء للمستخدمين، عمدت Node.js إلى إزالة مثل هذه الاختلافات بين أنظمة التشغيل وإسناد جميع الملفات المفتوحة إلى واصفات ملف عددية.

يُستعمَل التابع fs.open() لتخصيص واصف ملف جديد للملف المراد فتحه. متى ما خُصِّض واصف للملف، يمكن استعماله لقراءة بيانات من، أو كتابة بيانات على، أو طلب معلومات عن هذا الملف.

fs.open('/open/some/file.txt', 'r', (err, fd) => {
  if (err) throw err;
  fs.fstat(fd, (err, stat) => {
    if (err) throw err;
    // use stat

    // always close the file descriptor!
    fs.close(fd, (err) => {
      if (err) throw err;
    });
  });
});

تخصِّص أغلب أنظمة التشغيل مجالًا محدودًا من الأعداد لاستعمالها كواصفاتٍ للملفات التي قد تُفتَح في أي وقت، لذا فإنَّ إغلاق الواصف بعد اكتمال العملية أمرٌ بالغ الأهمية. سيؤدي إهمال أو فشل إغلاق واصفات الملفات إلى حدوث تسريب في الذاكرة (memory leak) ينتهي بانهيار التطبيق.

استعمال مجمع الخيوط (Threadpool Usage)

تستعمل جميع واجهات نظام الملفات البرمجية باستثناء fs.FSWatcher()‎ وتلك التي يظهر أنها تُستعمَل بشكل متزامن مجمع الخيوط الخاص بالمكتبة libuv والذي يمكن أن يكون يكون له تأثيرات مفاجئة وسلبية على بعض التطبيقات. اطلع إلى توثيق خيار سطر الأوامر UV_THREADPOOL_SIZE‎ للمزيد من التفاصيل.

الصنف fs.Dirent‎

أضيف في الإصدار: v10.10.0.

عندما يُستدعَى التابع fs.readdir() أو التابع fs.readdirSync()‎ مع ضبط قيمة الخيار withFileTypes‎ فيه إلى القيمة true‎، ستُملَأ المصفوفة الناتجة بالكائنات fs.Dirent‎ بدلًا من السلاسل النصية أو الكائنات Buffer‎.

‎dirent.isBlockDevice()‎

أضيف في الإصدار: v10.10.0.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Dirent‎ يمثِّل جهازًا كتليًّا (block device)، أو القيمة false‎ خلا ذلك.

dirent.isCharacterDevice()‎

أضيف في الإصدار: v10.10.0.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Dirent‎ يمثِّل جهازًا محرفيًّا (character device)، أو القيمة false‎ خلا ذلك.

dirent.isDirectory()‎

أضيف في الإصدار: v10.10.0.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Dirent‎ يمثِّل مجلَّدًا في نظام الملفات (file system directory)، أو القيمة false‎ خلا ذلك.

dirent.isFIFO()‎

أضيف في الإصدار: v10.10.0.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Dirent‎ يمثِّل الأنبوب FIFO (اختصار للعبارة first-in-first-out أي «من دخل أولًا يخرج أولًا»، كما يدعى أحيانًا «أنبوبًا مسمًى») ، أو القيمة false‎ خلا ذلك.

dirent.isFile()‎

أضيف في الإصدار: v10.10.0.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Dirent‎ يمثِّل ملفًا طبيعيًّا، أو القيمة false‎ خلا ذلك.

dirent.isSocket()‎

أضيف في الإصدار: v10.10.0.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Dirent‎ يمثِّل مقبسًا (socket)، أو القيمة false‎ خلا ذلك.

dirent.isSymbolicLink()‎

أضيف في الإصدار: v10.10.0.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Dirent‎ يمثِّل وصلةً رمزيَّةً (symbolic link)، أو القيمة false‎ خلا ذلك.

dirent.name‎

أضيفت في الإصدار: v10.10.0.

تمثل هذه الخاصية اسم الملف الذي يشير إليه الكائن fs.Dirent‎. يُحدَّد نوع هذه القيمة عبر options.encoding‎ الممرَّر إلى fs.readdir()‎ أو fs.readdirSync()‎.

الصنف fs.FSWatcher‎

أضيف في الإصدار: v0.5.8.

سيعيد الاستدعاء الناجح للتابع fs.watch()‎ كائنًا جديدًا من النوع fs.FSWatcher‎.

الكائن fs.FSWatcher‎ هو مطلقٌُ للأحداث (EventEmitter)، إذ يُطلِق الحدث 'change' كلما عُدِّل ملفٌ مراقبٌ.

الحدث 'change'

أضيف في الإصدار: v0.5.8.

  • eventType‎: ‏<string> نوع حدث «التغيير» الذي حصل.
  • filename‎: ‏<string>‏ | <Buffer> اسم الملف الذي حصل تغيير فيه (إن كان متاحًا).

يُطلَق هذا الحدث عندما يتغير شيء في المجلَّد أو الملف المراقب. يوجد المزيد من التفاصيل في توثيق التابع fs.watch()‎ في الأسفل.

قد لا يكون الوسيط filename‎ متوافرًا وهذا يعتمد على دعم نظام التشغيل. إن أعطي الوسيط filename‎، فسيُعطَى بوصفه كائنًا من النوع Buffer‎ إن استُدعَي التابع fs.watch() مع ضبط الخيار encoding‎ إلى القيمة 'buffer‎'؛ خلا ذلك، سيُعطَى الوسيط filename‎ في سلسلة نصية مرمزة بالترميز UTF-8.

// fs.watch() إضافة معالج حدث عبر مستمع
fs.watch('./tmp', { encoding: 'buffer' }, (eventType, filename) => {
  if (filename) {
    console.log(filename);
    // <Buffer ...> :سيُطبَع
  }
});

الحدث 'error'

أضيف في الإصدار: v10.10.0.

يُطلَق هذا الحدث متى ما توقف المراقب (watcher) عن مراقبة التغييرات. لن يكون الكائن fs.FSWatcher‎ قابلًا للاستعمال في معالج الحدث بعد إغلاقه.

الحدث 'close'

أضيف في الإصدار: v0.5.8.

يُطلَق هذا الحدث عندما يحدث خطأٌ أثناء عملية مراقبة الملف. لن يكون الكائن fs.FSWatcher الذي حصل خطأٌ فيه قابلًا للاستعمال في معالج الحدث.

watcher.close()‎

أضيف في الإصدار: v0.5.8. يوقف هذا التابع عملية مراقبة التغييرات في الكائن fs.FSWatcher المعطى. متى ما استدعي هذا التابع، لن يعد الكائن fs.FSWatcher المُمرَّر إليه قابلًا للاستعمال بعد ذلك الحين.

الصنف fs.ReadStream‎

أضيف في الإصدار: v0.1.9.3.

سيعيد الاستدعاء الناجح للتابع fs.createReadStream()‎ كائنًا جديدًا من النوع fs.ReadStream‎. تُعدُّ جميع الكائنات fs.ReadStream مجارٍ قابلةٍ للقراءة (Readable Streams).

الحدث 'close'

أضيف في الإصدار: v0.1.93.

يُطلَق هذا الحدث عندما يُغلَق واصف الملف الموجود ضمنيًّا في الكائن fs.ReadStream‎.

الحدث 'open'

أضيف في الإصدار: v0.1.93.

  • fd‎:‏ <integer> عدد صحيح يمثل واصف الملف الذي استعمله الكائن ReadStream‎.

يُطلَق هذا الحدث عندما يُفتَح واصف الملف للكائن fs.ReadStream.

الحدث 'ready'

أضيف في الإصدار: v9.11.0. يُطلَق هذا الحدث عندما يكون الكائن fs.ReadStream‎ جاهزًا للاستعمال؛ أي يُطلَق بعد الحدث 'open' مباشرةً.

readStream.bytesRead‎

أضيفت في الإصدار: v6.4.0.

تمثِّل هذه الخاصية عدد البايتات التي قُرأَت حين استدعائها.

readStream.path‎

أضيفت في الإصدار: v0.1.93.

تمثِّل هذه الخاصية مسار الملف الذي يُقرَأ المجرى منه كما حُدِّد في الوسيط الأول المُمرَّر إلى fs.createReadStream()‎. إن كان المسار path‎ المُمرَّر سلسلةً نصيةً، فستعيد الخاصية readStream.path‎ سلسلةً نصيةً أيضًا. أمَّا إن كان المسار path‎ المُمرَّر كائنًا من النوع Buffer‎، فستعيد الخاصية readStream.path‎ كائنًا من النوع Buffer‎ أيضًا.

الصنف fs.Stats‎

سجل التغييرات
الإصدار التغييرات
v8.1.0 أضيفت الأزمنة كأعداد.
v0.1.21 أضيف هذا الصنف.

يوفِّر الكائن fs.Stats‎ معلومات عن أي ملف. جميع الكائنات المعادة من التوابع fs.stat()‎، و fs.lstat()‎، و fs.fstat()‎، ونظيراتها المتزامنة هي من هذا الصنف. إن كانت قيمة الخيار bigint‎ في الوسيط options‎ المُمرَّر إلى هذه التوابع هي true‎، فستكون القيم العددية من النوع bigint‎ بدلًا من number‎.

Stats {
  dev: 2114,
  ino: 48064969,
  mode: 33188,
  nlink: 1,
  uid: 85,
  gid: 100,
  rdev: 0,
  size: 527,
  blksize: 4096,
  blocks: 8,
  atimeMs: 1318289051000.1,
  mtimeMs: 1318289051000.1,
  ctimeMs: 1318289051000.1,
  birthtimeMs: 1318289051000.1,
  atime: Mon, 10 Oct 2011 23:24:11 GMT,
  mtime: Mon, 10 Oct 2011 23:24:11 GMT,
  ctime: Mon, 10 Oct 2011 23:24:11 GMT,
  birthtime: Mon, 10 Oct 2011 23:24:11 GMT }

سيُعاد المثال السابق ولكن مع ضبط الخيار bigint‎ في الوسيط options‎ إلى القيمة true‎:

Stats {
  dev: 2114n,
  ino: 48064969n,
  mode: 33188n,
  nlink: 1n,
  uid: 85n,
  gid: 100n,
  rdev: 0n,
  size: 527n,
  blksize: 4096n,
  blocks: 8n,
  atimeMs: 1318289051000n,
  mtimeMs: 1318289051000n,
  ctimeMs: 1318289051000n,
  birthtimeMs: 1318289051000n,
  atime: Mon, 10 Oct 2011 23:24:11 GMT,
  mtime: Mon, 10 Oct 2011 23:24:11 GMT,
  ctime: Mon, 10 Oct 2011 23:24:11 GMT,
  birthtime: Mon, 10 Oct 2011 23:24:11 GMT }

stats.isBlockDevice()‎

أضيف في الإصدار: v0.1.10.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Stats‎ يمثِّل جهازًا كتليًّا (block device)، أو القيمة false‎ خلاف ذلك.

stats.isCharacterDevice()‎

أضيف في الإصدار: v0.1.10.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Stats‎ يمثِّل جهازًا محرفيًّا (character device)، أو القيمة false‎ خلاف ذلك.

stats.isDirectory()‎

أضيف في الإصدار: v0.1.10.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Stats‎ يمثِّل مجلَّدًا في نظام الملفات (file system directory)، أو القيمة false‎ خلاف ذلك.

stats.isFIFO()‎

أضيف في الإصدار: v0.1.10.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Stats‎ يمثِّل الأنبوب FIFO (اختصارٌ للعبارة first-in-first-out أي «من دخل أولًا يخرج أولًا»، كما يدعى أحيانًا «أنبوبًا مسمًى»)، أو القيمة false‎ خلاف ذلك.

stats.isFile()‎

أضيف في الإصدار: v0.1.10.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Stats‎ يمثِّل ملفًا طبيعيًّا، أو القيمة false‎ خلاف ذلك.

stats.isSocket()‎

أضيف في الإصدار: v0.1.10.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Stats‎ يمثِّل مقبسًا (socket)، أو القيمة false‎ خلاف ذلك.

stats.isSymbolicLink()‎

أضيف في الإصدار: v0.1.10.

يعيد هذا التابع القيمة true‎ إن كان الكائن fs.Stats‎ يمثِّل وصلةً رمزيَّةً (symbolic link)، أو القيمة false‎ خلاف ذلك.

stats.dev‎

تمثِّل هذه الخاصية المعرِّف العددي للجهاز الذي يحوي الملف.

stats.ino

تمثِّل هذه الخاصية رقم مؤشِّر الفهرسة (inode) لنظام الملفات المحدَّد.

stats.mode

تمثِّل هذه الخاصية حقلًا بتيًّا (bit-field) يصف نوع الملف ووضعه.

stats.nlink

تمثِّل هذه الخاصية عدد الوصلات الصلبة (hard-links) الموجود للملف.

stats.uid

تمثِّل هذه الخاصية معرِّف المستخدم العددي (UID) للمستخدم المالك للملف (في أنظمة POSIX).

stats.gid

تمثِّل هذه الخاصية معرِّف المجموعة العددي (GID) للمجموعة المالكة للملف (في أنظمة POSIX).

stats.rdev

تمثِّل هذه الخاصية معرِّف الجهاز العددي إن عُدَّ الملف «خاصًّا» (special).

stats.size

تمثِّل هذه الخاصية حجم الملف بالبايت.

stats.blksize

تمثِّل هذه الخاصية حجم الكتلة (block size) لنظام الملفات من أجل عمليات الإدخال والإخراج (i/o).

stats.blocks

تمثِّل هذه الخاصية عدد الكتل المحجوزة لهذا الملف.

stats.atimeMs

أضيفت في الإصدار: v8.1.0.

تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت تم الوصول فيه إلى هذا الملف معبَّرًا عنها بالميلي ثانية منذ عهد POSIX.

stats.mtimeMs

أضيفت في الإصدار: v8.1.0.

تمثِّل هذه الخاصية بصمة الوقت (timestamp) التي تشير إلى آخر وقت عُدِّل فيه هذا الملف معبَّرًا عنها بالميلي ثانية منذ عهد POSIX.

stats.ctimeMs

أضيفت في الإصدار: v8.1.0.

تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت عُدِّلَت فيه حالة هذا الملف معبَّرًا عنها بالميلي ثانية منذ عهد POSIX.

stats.birthtimeMs

أضيفت في الإصدار: v8.1.0.

تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى وقت إنشاء هذا الملف معبَّرًا عنها بالميلي ثانية منذ عهد POSIX.

stats.atime

أضيفت في الإصدار: v0.11.13.

تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت تم الوصول فيه إلى هذا الملف.

stats.mtime

أضيفت في الإصدار: v0.11.13.

تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت عُدِّل فيه هذا الملف.

stats.ctime

أضيفت في الإصدار: v0.11.13.

تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى آخر وقت عُدِّلَت فيه حالة هذا الملف.

stats.birthtime

أضيفت في الإصدار: v0.11.13.

تمثِّل هذه الخاصية بصمة وقت (timestamp) تشير إلى وقت إنشاء هذا الملف.

قيم الوقت في الكائن Stats‎

إن جميع الخاصيات atimeMs‎، و mtimeMs‎، و ctimeMs‎، و birthtimeMs‎ هي أعدادٌ تمثِّل أزمنةً بالميلي ثانية، وتعتمد دقتها على المنصة المستعملة. أمَّا الخاصيات atime‎، و mtime، و ctime، و birthtime، فهي كائنات من النوع Date‎ (أي تواريخ) تمثل أزمنةً وأوقاتًا مختلفةً. انتبه إلى أنَّ قيم الكائن Date (التاريخ) والكائن number‎ (الزمن) -لتلك الخاصيات- غير مترابطة مع بعضها بعضًا؛ أي إسناد قيمةٌ جديدةٌ لأحدهما لن ينعكس على القيمة المقابلة البديلة للآخر.

الأوقات في الكائن Stats‎ لها الدلالات التالية:

  • atime‎ (وقت الوصول): يمثِّل هذا الوقت آخر مرةٍ جرى فيها الوصول إلى البيانات. يتغيَّر باستعمال استدعاءات النظام mknod(2)‎، و utimes(2)‎، و read(2)‎.
  • atime‎ (وقت التعديل): يمثِّل هذا الوقت آخر عملية تعديل أجريَت على البيانات. يتغيَّر باستعمال استدعاء النظام mknod(2)‎، و utimes(2)‎، و write(2)‎.
  • atime‎ (وقت التغيير): يمثِّل هذا الوقت آخرة مرةٍ تغيَّرَت فيها حالة الملف (تعديل بيانات مؤشِّر الفهرسة [inode]). يتغيَّر عبر استدعاءات النظام chmod(2)‎، و chown(2)، و link(2)‎، و mknod(2)‎، و rename(2)‎، و unlink(2)‎ و utimes(2)‎، و read(2)، و write(2)‎.
  • atime‎ (وقت الإنشاء): يمثِّل وقت إنشاء الملف، إذ يُضبَط هذا الوقت عندما يُنشَأ الملف. في أنظمة الملفات التي لا يتوافر فيها وقت الإنشاء، قد يأخذ هذا الحقل قيمةً بديلةً هي إمَّا القيمة ctime‎ أو القيمة 1970-01-01T00:00Z‎ (أي بصمة الوقت 0‎ في توقيت يونكس). في هذه الحالة، قد تكون هذه القيمة أكبر من القيمة atime‎ أو mtime‎. في نظام التشغيل Darwin‎ وتوزيعات FreeBSD أخرى، تُضبَط هذه القيمة أيضًا إذا ضُبِطَت القيمة atime‎ بشكل واضح إلى قيمة سابقة للقيمة birthtime‎ الحالية باستعمال استدعاء النظام utimes(2)‎.

قبل الإصدار Node.js 0.12، تأخذ القيمة ctime‎ نفس القيمة birthtime‎ في أنظمة ويندوز. بدءًا من الإصدار 0.12، لم تعد القيمة ctime‎ تمثل «وقت الإنشاء»، ولم تكن كذلك مطلقًا في الأنظمة الشبيه بيونكس.

الصنف fs.WriteStream‎

أضيف في الإصدار: v0.1.93.

يمثل الكائن WriteStream‎ مجرًى قابلًا للكتابة.

الحدث 'close'

أضيف في الإصدار: v0.1.93.

يُطلَق هذا الحدث عندما يُغلَق واصف الملف الموجود ضمنيًّا في الكائن WriteStream.

الحدث 'open'

أضيف في الإصدار: v0.1.93.

  • fd‎:‏ <integer> عدد صحيح يمثل واصف الملف الذي استعمله الكائن WriteStream.

يُطلَق هذا الحدث عندما يُفتَح واصف الملف للكائن WriteStream.

الحدث 'ready'

أضيف في الإصدار: v9.11.0.

يُطلَق هذا الحدث عندما يكون الكائن WriteStream جاهزًا للاستعمال؛ أي يُطلَق بعد الحدث 'open' مباشرةً.

writeStream.bytesWritten

أضيفت في الإصدار: v0.4.7.

تمثِّل هذه الخاصية عدد البايتات التي كُتبَت حين استدعائها. لا تتضمن هذه القيمة حجم البيانات الموجودة في الطابور بانتظار كتابتها.

readStream.path‎

أضيفت في الإصدار: v0.1.93.

تمثِّل هذه الخاصية مسار الملف الذي يُكتَب المجرى فيه كما حُدِّد في الوسيط الأول المُمرَّر إلى fs.createWriteStream()‎. إن كان المسار path‎ المُمرَّر سلسلةً نصيةً، فستعيد الخاصية writeStream.path‎ سلسلةً نصيةً أيضًا. أمَّا إن كان المسار path‎ المُمرَّر كائنًا من النوع Buffer‎، فستعيد الخاصية writeStream.path‎ كائنًا من النوع Buffer‎ أيضًا.

fs.access(path[, mode], callback)‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمل البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v6.3.0 نُقلَت الثوابت مثل fs.R_OK‎ وغيرها التي توجد مباشرةً في fs‎ إلى fs.constants‎ كإهمال مرن وسلسل. وبالتالي، استعمل fs‎ في الإصدارات التي قبل v6.3.0 للوصول إلى هذه الثوابت، أو افعل شيئًا آخر مثل (fs.constants || fs).R_OK‎ للعمل مع جميع الإصدارات بطريقة واحدة.
v0.11.15 أضيف هذا التابع.

يفحص هذا التابع أذونات المستخدم للملف أو المجلد المحدَّد في المسار path‎. الوسيط mode‎ الاختياري هو عددٌ صحيحٌ يحدِّد عمليات التحقق من قابلية الوصول المراد تنفيذها. اطلع على القسم «ثوابت الوصول للملف» لمعرفة القيمة المتاحة للوسيط mode‎. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل fs.constants.W_OK | fs.constants.R_OK‎).

الوسيط الأخير، callback‎، هو دالة رد نداءٍ تُستدعَى مع وسيط الخطأ المحتمل حدوثه. إن فشلت إحدى عمليات التحقق من قابلية الوصول، فسيكون وسيط الخطأ الكائن Error‎. يتحقق المثال التالي من وجود الملف package.json‎ وإن كان قابلًا للقراءة أو الكتابة:

const file = 'package.json';

// التحقق من وجود الملف في المجلد الحالي
fs.access(file, fs.constants.F_OK, (err) => {
  console.log(`${file} ${err ? 'does not exist' : 'exists'}`);
});

// التحقق من كون الملف قابلًا للقراءة
fs.access(file, fs.constants.R_OK, (err) => {
  console.log(`${file} ${err ? 'is not readable' : 'is readable'}`);
});

// التحقق من كون الملف قابلًا للكتابة
fs.access(file, fs.constants.W_OK, (err) => {
  console.log(`${file} ${err ? 'is not writable' : 'is writable'}`);
});

// التحقق من وجود الملف في المجلد الحالي ومن كونه قابلًا للقراءة
fs.access(file, fs.constants.F_OK | fs.constants.W_OK, (err) => {
  if (err) {
    console.error(
      `${file} ${err.code === 'ENOENT' ? 'does not exist' : 'is read-only'}`);
  } else {
    console.log(`${file} exists, and it is writable`);
  }
});

لا يُنصَح باستدعاء fs.access()‎ للتحقُّق من قابلة الوصول للملف قبل استدعاء fs.open()‎، أو fs.readFile()‎، أو fs.writeFile()‎، إذ يؤدي فعل ذلك إلى خلق «حالة تسابق» (race condition) لأنَّه ربما قد تُغيِّر عمليات أخرى حالة الملف بين الاستدعائين. بدلًا من ذلك، يجب على شيفرة المستخدم أن تفتح وتقرأ وتكتب في الملف مباشرةً وأن تعالج أي خطأ يُطلَق إن لم يكن الملف قابلًا للوصول. يوضح المثال التالي كيفية الكتابة على ملف بطريقةٍ لا يوصى بها:

fs.access('myfile', (err) => {
  if (!err) {
    console.error('myfile already exists');
    return;
  }

  fs.open('myfile', 'wx', (err, fd) => {
    if (err) throw err;
    writeMyData(fd);
  });
});

أمَّا المثال التالي، فيُوضِّح كيفية القراءة من ملف بالطريقة المُثلَى:

fs.open('myfile', 'wx', (err, fd) => {
  if (err) {
    if (err.code === 'EEXIST') {
      console.error('myfile already exists');
      return;
    }

    throw err;
  }

  writeMyData(fd);
});

يوضح المثال التالي كيفية القراءة من ملف بطريقة لا يوصى بها:

fs.access('myfile', (err) => {
  if (err) {
    if (err.code === 'ENOENT') {
      console.error('myfile does not exist');
      return;
    }

    throw err;
  }

  fs.open('myfile', 'r', (err, fd) => {
    if (err) throw err;
    readMyData(fd);
  });
});

أمَّا المثال التالي، فيُوضِّح كيفية القراءة من ملف بالطريقة المُثلَى:

fs.open('myfile', 'r', (err, fd) => {
  if (err) {
    if (err.code === 'ENOENT') {
      console.error('myfile does not exist');
      return;
    }

    throw err;
  }

  readMyData(fd);
});

تتحقَّق الأمثلة التي «لا يوصى باتباعها» من قابلة الوصول ثمَّ تستعمل الملف؛ أمَّا الأمثلة التي «يوصى باتباعها»، فهي أفضل لأنَّها تستعمل الملف مباشرةً وتعالج الخطأ إن حصل.

عمومًا، يُتحقَّق من قابلة الوصول للملف في حال استعمال الملف بشكل غير مباشر مثل عندما تكون قابلية وصول ملف إشارةً من عملية أخرى.

fs.accessSync(path[, mode])‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمل البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.11.15 أضيف هذا التابع.

يفحص هذا التابع بشكل متزامن أذونات المستخدم للملف أو المجلد المحدَّد في المسار path‎. الوسيط mode‎ الاختياري هو عدد صحيح يحدِّد عمليات التحقُّق من قابلية الوصول المراد تنفيذها. اطلع على القسم «ثوابت الوصول للملف» لمعرفة القيمة المتاحة للوسيط mode‎. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل fs.constants.W_OK | fs.constants.R_OK‎).

إن فشلت إحدى عمليات قابلية الوصول، فيُسرمَى الخطأ Error‎. خلا ذلك، سيعيد التابع القيمة undefined‎.

try {
  fs.accessSync('etc/passwd', fs.constants.R_OK | fs.constants.W_OK);
  console.log('can read/write');
} catch (err) {
  console.error('no access!');
}

fs.appendFile(path, data[, options], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v7.0.0 لن يُغيَّر المعامل options المُمرَّر مطلقًا.
v5.0.0 يمكن للمعامل file‎ أن يكون واصف ملفٍ الآن.
v0.6.7 أضيف هذا التابع.

يضيف هذا التابع بشكل غير متزامن بياناتٍ إلى ملف، أو ينشئ ملفًا ويضع البيانات فيه إن لم يكن هذا الملف موجودًا. يمكن أن تكون البيانات data‎ المراد كتابتها سلسلةً نصيةً أو كائنًا من النوع Buffer‎.

fs.appendFile('message.txt', 'data to append', (err) => {
  if (err) throw err;
  console.log('The "data to append" was appended to file!');
});

إن كان الوسيط options‎ سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز:

fs.appendFile('message.txt', 'data to append', 'utf8', callback);

يمكن أن يُعطَى المسار path‎ قيمةً عدديةً تمثِّل واصف الملف الذي فُتِح لإضافة البيانات فيه (باستعمال fs.open()‎ أو fs.openSync()‎). لن يُغلَق واصف الملف بشكل تلقائي.

fs.open('message.txt', 'a', (err, fd) => {
  if (err) throw err;
  fs.appendFile(fd, 'data to append', 'utf8', (err) => {
    fs.close(fd, (err) => {
      if (err) throw err;
    });
    if (err) throw err;
  });
});

fs.appendFileSync(path, data[, options])‎

سجل التغييرات
الإصدار التغييرات
v7.0.0 لن يُغيِّر المعامل options المُمرَّر مطلقًا.
v5.0.0 يمكن للمعامل file‎ أن يكون واصف ملفٍ الآن.
v0.6.7 أضيف هذا التابع.

يضيف هذا التابع بشكل متزامن بياناتٍ إلى ملف، أو ينشئ ملفًا ويضع البيانات فيه إن لم يكن هذا الملف موجودًا. يمكن أن تكون البيانات data‎ المراد كتابتها سلسلةً نصيةً أو كائنًا من النوع Buffer‎.

try {
  fs.appendFileSync('message.txt', 'data to append');
  console.log('The "data to append" was appended to file!');
} catch (err) {
  // عالج الخطأ (إن حصل) هنا
}

إن كان الوسيط options‎ سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز:

fs.appendFileSync('message.txt', 'data to append', 'utf8');

يمكن أن يُعطَى المسار path‎ قيمةً عدديةً تمثُّل واصف الملف الذي فُتِح لإضافة البيانات فيه (باستعمال fs.open() أو fs.openSync()‎). لن يُغلَق واصف الملف بشكل تلقائي.

let fd;

try {
  fd = fs.openSync('message.txt', 'a');
  fs.appendFileSync(fd, 'data to append', 'utf8');
} catch (err) {
  // عالج الخطأ (إن حصل) هنا
} finally {
  if (fd !== undefined)
    fs.closeSync(fd);
}

fs.chmod(path, mode, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.6.0 يمكن الآن أن يكون الوسيط path‎ كائنًا من النوع URL متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.30 أضيف هذا التابع.

يغيِّر هذا التابع بشكل غير متزامن أذونات ملفٍ. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. انظر أيضًا الدالة chmod(2)‎.

نمط الملف (File Mode)

الوسيط mode‎ المستعمل في التابعين fs.chmod()‎ و fs.chmodSync()‎ كلاهما هو قناع بتِّي عددي (numeric bitmask) يُنشَأ باستعمال المعامل OR المنطقي للثوابت التالية:

الثابت القيمة الثمانية الإذن
fs.constants.S_IRUSR 0o400 يمكن للمالك قراءة الملف.
fs.constants.S_IWUSR 0o200 يمكن للمالك الكتابة على الملف.
fs.constants.S_IXUSR 0o100 يمكن للمالك تنفيذ الملف أو البحث ضمنه.
fs.constants.S_IRGRP 0o40 يمكن للمجموعة المالكة قراءة الملف.
fs.constants.S_IWGRP 0o20 يمكن للمجموعة المالكة الكتابة على الملف.
fs.constants.S_IXGRP 0o10 يمكن للمجموعة المالكة تنفيذ الملف أو البحث ضمنه.
fs.constants.S_IROTH 0o4 يمكن للآخرين قراءة الملف.
fs.constants.S_IWOTH 0o2 يمكن للآخرين الكتابة على الملف.
fs.constants.S_IXOTH 0o1 يمكن للآخرين تنفيذ الملف أو البحث ضمنه.

أسهل طريقة لضبط الوسيط mode‎ هي استعمال سلسلة من ثلاثة أعداد ثمانية (مثل العدد 765‎). يحدِّد العدد في أقصى اليسار (هو 7 في مثالنا) أذونات مالك الملف، والعدد الذي في المنتصف (هو 6 في مثالنا) أذونات المجموعة المالكة، والعدد في أقصى اليمين (هو 5 في مثالنا) أذونات الأشخاص الآخرين.

العدد الثماني الأذونات
7 القراءة والكتابة والتنفيذ.
6 القراءة والكتابة.
5 القراءة والتنفيذ.
4 القراءة فقط.
3 الكتابة والتنفيذ.
2 الكتابة فقط.
1 التنفيذ.
0 لا يوجد أذونات.

على سبيل المثال، القيمة الثمانية 0o765‎ تعني:

  • يُسمَح للمالك بقراءة وكتابة وتنفيذ الملف.
  • يُسمَح للمجموعة المالكة بالقراءة والكتابة على الملف.
  • يُسمَح للآخرين بقراءة وتنفيذ الملف.

عند استعمال الأعداد المجرَّدة في المكان الذي يُتوقَّع فيه استعمال أنماط الملف، يؤدي استعمال أية قيمة أكبر من 0o777‎ إلى حدوث سلوكيات غير مدعومة تختلف باختلاف المنصة المستعملة؛ وبالتالي، ثوابتٌ مثل S_ISVTX‎، و S_ISGID‎، و S_ISUID‎ غيرُ موجودةٍ في fs.constants‎. تحذير: في ويندوز، يمكن تغيير أذونات الكتابة فقط، ولا تؤخذ الاختلافات بين أذونات المجموعة المالكة، أو المالك، أو الآخرين بالحسبان.

fs.chmodSync(path, mode)‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path‎ كائنًا من النوع URL متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.30 أضيف هذا التابع.

يغيِّر هذا التابع بشكل متزامن أذونات ملفٍ. لمزيد من التفاصيل، ارجع إلى توثيق الإصدار غير المتزامن من هذه الواجهة البرمجية وهي fs.chmod()‎.

انظر أيضًا الدالة chmod(2)‎.

fs.chown(path, uid, gid, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.6.0 يمكن الآن أن يكون الوسيط path‎ كائنًا من النوع URL متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.30 أضيف هذا التابع.

يغيِّر هذا التابع بشكل غير متزامن المالك والمجموعة المالكة لملف. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.

انظر أيضًا: chown(2)‎.

fs.chownSync(path, uid, gid)‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path‎ كائنًا من النوع URL متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.30 أضيف هذا التابع.

يغيِّر هذا التابع بشكل متزامن المالك والمجموعة المالكة لملف، أو يعيد القيمة undefined. هذا التابع هو النسخة المتزامنة من التابع fs.chown()‎.

انظر أيضًا: chown(2).

‎fs.close(fd, callback)

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.30 أضيف هذا التابع.

يغلق هذا التابع بشكل غير متزامن ملفًا مفتوحًا، إذ يُنفِّذ دالة النظام close(2)‎. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.

fs.closeSync(fd)‎

أضيف في الإصدار: v0.1.21.

يغلق هذا التابع بشكل متزامن ملفًا مفتوحًا، إذ يُنفِّذ دالة النظام close(2)‎. يعيد القيمة undefined‎.

fs.constants‎

يعيد هذا التابع كائنًا يحوي الثوابت الأكثر استعمالًا في عمليات نظام الملفات. الثوابت المعرَّفة حاليًا تجدها مع شرحٍ لها في القسم «الثوابت المستعملة في الوحدة fs‎» في الأسفل.

fs.copyFile(src, dest[, flags], callback)‎

أضيف في الإصدار:v8.5.0.

  • src:‏ <string>‏ | <Buffer>‏ | <URL> اسم الملف المراد نسخه.
  • dest:‏ <string>‏ | <Buffer>‏ | <URL> اسم الملف الوجهة الذي سيُنسَخ في الملف المحدَّد في المعامل src.
  • flags:‏ <number> مُعدِّلات (modifiers) عملية النسخ. القيمة الافتراضية هي: 0.
  • callback:‏ <Function>

ينسخ هذا التابع ملفًا من src‎ إلى dest‎ بشكل غير متزامن. تُستبدَل قيمة الوسيط dest‎ إن كانت موجودة مسبقًا بشكل افتراضي. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. لا تعطِ Node.js أية ضمانات متعلقة بتجزئة عملية النسخ. إن حصل أي خطأ بعد فتح الملف الوجهة للكتابة، ستحاول Node.js إزالته.

الوسيط flags‎ اختياري وهو عددٌ صحيحٌ يحدِّد سلوك عملية النسخ. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل fs.constants.COPYFILE_FICLONE | fs.constants.COPYFILE_EXCL). الثوابت المدعومة هي:

  • fs.constants.COPYFILE_EXCL‎: ستفشل عملية النسخ إن كان الملف dest‎ موجودًا من قبل.

fs.constants.COPYFILE_FICLONE‎: ستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستُستخدَم آلية النسخ التراجعي (fallback copy).

  • fs.constants.COPYFILE_FICLONE‎: ستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستفشل عملية النسخ.
const fs = require('fs');

// أو سيُستبدَل بشكل افتراضي destination.txt سيُنشَأ الملف
fs.copyFileSync('source.txt', 'destination.txt');
console.log('source.txt was copied to destination.txt');

إن كان الوسيط الأخير عددًا، فهو يحدِّد الوسيط flags‎:

const fs = require('fs');
const { COPYFILE_EXCL } = fs.constants;

// موجودًا من قبل destination.txt ستفشل العملية إن كان الملف ،COPYFILE_EXCL باستخدام الثابت
fs.copyFileSync('source.txt', 'destination.txt', COPYFILE_EXCL);

fs.createReadStream(path[, options])‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path‎ كائنًا من النوع URL متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لن يُغيِّر المعامل options المُمرَّر مطلقًا.
v2.3.0 يمكن أن يكون المعامل options المُمرَّر سلسلة نصية الآن.
v0.1.31 أضيف هذا التابع.
  • القيم المعادة: <fs.ReadStream> انظر القسم «المجاري القابلة للقراءة» في توثيق الوحدة stream‎.

المجرى المُعاد باستعمال هذا التابع يملك القيمة 64 كيلو بت الافتراضية للوسيط highWaterMark‎ خلافًا للمجرى القابل للقراءة الذي يملك القيمة 16 كيلو بت فقط لذلك الوسيط.

يمكن أن يتضمن الوسيط options‎ الخيارين start‎ و end‎ لقراءة مجالٍ محدَّدٍ من البايتات من الملف بدلًا من قراءته كاملًا. يدخل الوسيطين start‎ و end‎ كلاهما ضمن المجال، ويبدأ الوسيط من القيمة 0. إن حُدِّد الوسيط fd‎ ولم يُعطَ الوسيط start‎ أو كانت قيمته undefined‎، فسيقرأ التابع fs.createReadStream()‎ بالتسلسل بدءًا من موقع المؤشر الحالي للملف. يمكن أن يكون الوسيط encoding‎ أيًّا من الترميزات المقبولة في الصنف Buffer‎.

إن أعطي الوسيط fd‎، فسيتجاهل ReadStream‎ الوسيط path‎ ويستخدم واصف الملف المعطى. هذا يعني أنَّه لن يُطلَق الحدث 'open'. يجب أن يكون واصف الملف fd‎ المعطى محجوزًا. يجب أن يمرَّر واصف الملف غير المحجوز إلى net.Socket‎.

إن كان واصف الملف fd‎ يشير إلى جهاز محرفي (character device) يدعم وضع القراءة المحجوزة (blocking reads) فقط (مثل لوحة المفاتيح أو بطاقة الصوت)، فلن تنتهي عملية القراءة حتى تتوافر البيانات. هذا يساعد بمنع العملية من الخروج والمجرى من الإغلاق بشكل طبيعي.

const fs = require('fs');
// إنشاء مجرًى من بعض الأجهزة المحرفية
const stream = fs.createReadStream('/dev/input/event0');
setTimeout(() => {
  stream.close(); // قد لا يُغلق هذا المجرى
  // ؛ فإن أشار المورد(artificially marking) نهاية المجرى هي علامة اصطناعية 
  // .الضمني إلى نهاية الملف، فهذا سيسمح بإغلاق المجرى
  // هذا لا يلغي عمليات الكتابة قيد الانتظار، وإذا كان هنالك مثل 
  // هذه العمليات، فربما لن تستطيع العملية الخروج بنجاح
  // .حتى تنتهي
  stream.push(null);
  stream.read(0);
}, 100);

إن كانت قيمة الوسيط autoClose‎ هي false‎، فلن يُغلَق واصف الملف حينئذٍ حتى لو حصل خطأ. في هذه الحالة، تقع مسؤولية إغلاق الملف على عاتق التطبيق والتأكد من عدم حصول تسريب في واصفات الملفات. إن ضُبِط الوسيط autoClose‎ إلى القيمة true‎ (السلوك الافتراضي)، فسيُغلَق واصف الملف تلقائيًّا متى ما أطلق الحدث 'error' أو الحدث 'end'.

يضبط الوسيط mode‎ نمط الملف (الأذونات والبتات اللاصقة [sticky bits]) في حال أنشئ الملف آنذاك فقط.

إليك مثالٌ يوضِّح كيفية قراءة آخر 10 بايتات من ملفٍ بحجم 100 بايت:

fs.createReadStream('sample.txt', { start: 90, end: 99 });

إن كان options‎ سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز.

fs.createWriteStream(path[, options])‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path‎ كائنًا من النوع URL متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لن يُغيِّر المعامل options المُمرَّر مطلقًا.
v2.3.0 يمكن أن يكون المعامل options المُمرَّر سلسلة نصية الآن.
v0.1.31 أضيف هذا التابع.
  • القيم المعادة: <fs.ReadStream> انظر القسم «المجاري القابلة للكتابة» في توثيق الوحدة stream‎.

يمكن أن يتضمن الوسيط options‎ الخيارstart‎ للسماح بكتابة البيانات في موضع محدِّد بعد تخطي عددٍ محدِّدٍ من البايتات الأولى. قد يتطلَّب تعديل الملف بدلًا من استبداله أن تكون قيمة الخيار flags‎ هي 'r+' بدلًا من القيمة 'w' الافتراضية. يمكن أن يكون الوسيط encoding‎ أيًّا من الترميزات المقبولة في الصنف Buffer‎.

إن كانت قيمة الوسيط autoClose‎ هي false‎، فلن يُغلَق واصف الملف حينئذٍ حتى لو حصل خطأ. في هذه الحالة، تقع مسؤولية إغلاق الملف على عاتق التطبيق والتأكد من عدم حصول تسريبٍ في واصفات الملفات. أمَّا إن ضُبِط الوسيط autoClose‎ إلى القيمة true‎ (السلوك الافتراضي)، فسيُغلَق واصف الملف تلقائيًّا متى ما أطلق الحدث 'error' أو الحدث 'end'.

إن أعطي الوسيط fd‎، فسيتجاهل WriteStream الوسيط path‎ ويستخدم واصف الملف المعطى. هذا يعني أنه لن يُطلَق الحدث 'open'. يجب أن يكون واصف الملف fd‎ المعطى محجوزًا. يجب أن يمرَّر واصف الملف غير المحجوز إلى net.Socket‎.

إن كان options‎ سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز.

fs.exists(path, callback)‎

الاستقرار: 0 - مهمل. استعمل التابع fs.stat()‎ أو fs.access() بدلًا منه.

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path‎ كائنًا من النوع URL متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v1.0.0 أهمل هذا التابع.
v0.0.2 أضيف هذا التابع.

يتحقق هذا التابع إن كان المسار المعطى موجودًا أم لا عبر التحقق من نظام الملفات ثم يستدعي الوسيط callback‎ إمَّا مع القيمة true‎ أو القيمة false‎.

fs.exists('/etc/passwd', (exists) => {
  console.log(exists ? 'it\'s there' : 'no passwd!');
});

ملاحظة: معاملات رد النداء هذا غير متناسقة مع معاملات ردود نداء Node.js الأخرى. الحالة السائدة هي أن يكون المعامل الأول لرد النداء في Node.js هو المعامل err‎ متبوعًا بمعاملات أخرى اختيارية. رد النداء في التابع fs.exists()‎ يملك معامل منطقي وحيد فقط. هذا هو أحد الأسباب التي يوصى من أجلها استعمال التابع fs.access() عوضًا عن التابع fs.exists()‎. لا يُنصَح باستعمال التابع fs.exists()‎ للتحقق من وجود ملفٍ قبل استدعاء fs.open()‎، أو fs.readFile()‎، أو fs.writeFile()‎. يؤدي فعل ذلك إلى خلق «حالة سباق» (race condition) لأنه ربما قد تُغيِّر عمليات أخرى حالة الملف بين الاستدعائين. بدلًا من ذلك، يجب على شيفرة المستخدم أن تفتح وتقرأ وتكتب في الملف مباشرةً وأن تعالج أي خطأ يُطلَق إن لم يكن موجودًا. يوضح المثال التالي كيفية الكتابة على ملف بطريقة لا يوصى بها:

fs.exists('myfile', (exists) => {
  if (exists) {
    console.error('myfile already exists');
  } else {
    fs.open('myfile', 'wx', (err, fd) => {
      if (err) throw err;
      writeMyData(fd);
    });
  }
});

أمَّا المثال التالي، فيوضح كيفية الكتابة على ملف بالطريقة المُثلَى:

fs.open('myfile', 'wx', (err, fd) => {
  if (err) {
    if (err.code === 'EEXIST') {
      console.error('myfile already exists');
      return;
    }

    throw err;
  }

  writeMyData(fd);
});

يوضح المثال التالي كيفية القراءة من ملف بطريقة لا يوصى بها:

fs.exists('myfile', (exists) => {
  if (exists) {
    fs.open('myfile', 'r', (err, fd) => {
      if (err) throw err;
      readMyData(fd);
    });
  } else {
    console.error('myfile does not exist');
  }
});

أمَّا المثال التالي، فيوضِّح كيفية القراءة من ملف بالطريقة المُثلَى:

fs.open('myfile', 'r', (err, fd) => {
  if (err) {
    if (err.code === 'ENOENT') {
      console.error('myfile does not exist');
      return;
    }

    throw err;
  }

  readMyData(fd);
});

تتحقق الأمثلة التي «لا يوصى باتباعها» من وجود الملف ثم تستعمله؛ أمَّا الأمثلة التي «يوصى باتباعها»، فهي أفضل لأنَّها تستعمل الملف مباشرةً وتعالج الخطأ إن حصل.

عمومًا، يُتحقَّق من وجود الملف في حال استُعمِل الملف بشكل غير مباشر مثل عندما يكون وجود ملف إشارةً من عملية أخرى.

fs.existsSync(path)‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path‎ كائنًا من النوع URL متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.21 أضيف هذا التابع.

يعيد التابع القيمة true‎ إن كان المسار موجودًا، أو القيمة false‎ خلا ذلك. لتفاصيل أوسع، انظر توثيق النسخة الغير متزامنة من هذا التابع وهي التابع fs.exists()‎.

انتبه إلى أنَّ التابع fs.exists()‎ مهمل، ولكن التابع fs.existsSync()‎ غير مهمل. المعامل callback‎ المُمرَّر إلى fs.exists()‎ يقبل معاملات تعد غير متناسقة مع معاملات ردود النداء الأخرى في Node.js.

لا يستعمل التابع fs.existsSync()‎ رد نداءٍ.

fs.fchmod(fd, mode, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.4.7 أضيف هذا التابع.

يغيِّر هذا التابع نمط الملف (file mode) عبر استدعاء النظام fchmod(2)‎ بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.

fs.fchmodSync(fd, mode)‎

أضيف في الإصدار: v0.4.7.

يغيِّر هذا التابع نمط الملف (file mode) عبر استدعاء النظام fchmod(2)‎ بشكل متزامن.

fs.fchown(fd, uid, gid, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.4.7 أضيف هذا التابع.

يغيِّر هذا التابع المستخدم المالك للملف عبر استدعاء النظام fchown(2)‎ بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.

fs.fchownSync(fd, uid, gid)‎

أضيف في الإصدار: v0.4.7.

يغيِّر هذا التابع المستخدم المالك للملف عبر استدعاء النظام fchown(2)‎ بشكل متزامن. يعيد هذا التابع القيمة undefined‎.

fs.fdatasync(fd, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.96 أضيف هذا التابع.

ينفِّذ هذا التابع استدعاء النظام fdatasync(2)‎ بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.

fs.fdatasyncSync(fd)‎

أضيف في الإصدار: v0.1.96.

ينفِّذ هذا التابع استدعاء النظام fdatasync(2) بشكل متزامن. يعيد هذا التابع القيمة undefined‎.

fs.fstat(fd[, options], callback)‎

الإصدار التغييرات
v10.5.0 يقبل التابع كائن options‎ إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.95 أضيف هذا التابع.
  • fd:‏ <integer>
  • options:‏ <Object>
    • bigint:‏ <boolean> يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن fs.Stats‎ المعاد من النوع bigint. القيمة الافتراضية هي: false‎.
  • callback:‏ <Function>
  • stats:‏ <fs.Stats>

يجلب هذا التابع معلومات حول الملف عبر استدعاء دالة النظام fstat(2)‎ بشكل غير متزامن. يمرَّر إلى دالة رد النداء وسيطين هما: err‎، و stats‎، إذ stats‎ هو الكائن fs.Stats‎. التابع fstat()‎ ممائلٌ تمامًا للتابع stat()‎ باستثناء أنَّ الملف المراد جلب معلومات عنه يحدَّد عبر واصف الملف fd.

fs.fstatSync(fd[, options])‎

سجل التغييرات
الإصدار التغييرات
v10.5.0 يقبل التابع كائن options‎ إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v0.1.95 أضيف هذا التابع.
  • fd:‏ <integer>
  • options:‏ <Object>
    • bigint:‏ <boolean> يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن fs.Stats‎ المعاد من النوع bigint. القيمة الافتراضية هي: false‎.
  • القيم المعادة: <fs.Stats>

يجلب هذا التابع معلومات حول الملف عبر استدعاء دالة النظام fstat(2) بشكل متزامن.

fs.fsync(fd, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.95 أضيف هذا التابع.

ينفِّذ هذا التابع دالة النظام fsync(2)‎ بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.

fs.fsyncSync(fd)‎

أضيف في الإصدار: 0.1.96.

ينفِّذ هذا التابع دالة النظام fsync(2) بشكل متزامن. يعيد هذا التابع القيمة undefined‎.

fs.ftruncate(fd[, len], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.8.6 أضيف هذا التابع.

يقطع هذا التابع الملف ذا الواصف fd‎ إلى الحجم len‎ عبر استدعاء دالة النظام ftruncate(2) بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.

إن كان حجم الملف أكبر من الحجم len‎ المعطى بالبايت، فستُعاد البايتات len‎ الأولى فقط من الملف. على سبيل المثال، يعيد البرنامج التالي البايتات الأربعة الأولى فقط من الملف:

console.log(fs.readFileSync('temp.txt', 'utf8'));
// Node.js :سيُطبَع

// جلب واصف الملف للملف المراد اقتطاعه
const fd = fs.openSync('temp.txt', 'r+');

// اقتطاع أول أربعة بايتات من الملف
fs.ftruncate(fd, 4, (err) => {
  assert.ifError(err);
  console.log(fs.readFileSync('temp.txt', 'utf8'));
});
// Node :سيُطبَع
إن كان حجم الملف أقل من الحجم <code>len</code> المراد اقتطاعه، فسيُمدَّد حجم الملف إلى الحجم <code>len‎</code> بالبايت وستُملَأ البايتات المضافة ببايتات عدمية (أي بالقيمة <code>'\0'‎</code>):
<syntaxhighlight lang="javascript">console.log(fs.readFileSync('temp.txt', 'utf8'));
// Node.js :سيُطبَع

// جلب واصف الملف للملف المراد اقتطاعه
const fd = fs.openSync('temp.txt', 'r+');

// محاولة اقتطاع الملف إلى الحجم 10 بايت في حين أن حجمه الحقيقي هو 7 بايت
fs.ftruncate(fd, 10, (err) => {
  assert.ifError(err);
  console.log(fs.readFileSync('temp.txt'));
});
// <Buffer 4e 6f 64 65 2e 6a 73 00 00 00> :سيُطبَع
// (UTF8 في الترميز 'Node.js\0\0\0' أي تكون)

البايتات الأخيرة المضافة هي بايتات عدمية ('\0'‎) لتعويض البايتات الإضافية الناتجة عن عملية الإفراط في الاقتطاع (over-truncation).

fs.ftruncateSync(fd[, len])‎

أضيف في الإصدار: v0.8.6.

يقطع هذا التابع الملف ذا الواصف fd‎ إلى الحجم len‎ عبر استدعاء دالة النظام ftruncate(2)‎ بشكل متزامن. لمزيد من التفاصيل، اطلع رجاءً على توثيق الإصدار غير المتزامن من هذا التابع الذي هو fs.ftruncate()‎.

fs.futimes(fd, atime, mtime, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v4.1.0 يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة NaN، والقيمة Infinity‎ لتكون محدِّدات للوقت (time specifiers).
v0.4.2 أضيف هذا التابع.

يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بواصف الملف المعطى. اطلع على التابع fs.utimes().

لا يعمل هذا التابع على إصدارات AIX التي قبل 7.1، إذ ستعيد إن استعملت في تلك الإصدارات الخطأ UV_ENOSYS‎.

fs.futimesSync(fd, atime, mtime)‎

سجل التغييرات
الإصدار التغييرات
v4.1.0 يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة NaN‎، والقيمة Infinity‎ لتكون محدِّدات للوقت (time specifiers).
v0.4.2 أضيف هذا التابع.

يمثِّل هذا التابع الإصدار المتزامن من التابع fs.futimes(). يعيد هذا التابع القيمة undefined‎.

fs.lchmod(path, mode, callback)‎

الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.4.7 أضيف هذا التابع.

يغيِّر هذا التابع أذونات ملفٍ عبر استدعاء lchmod(2)‎ بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. هذا التابع متاحٌ في أنظمة macOS فقط.

‎fs.lchmodSync(path, mode)‎

أهملت بدءًا من الإصدار: v0.4.7.

يغيِّر هذا التابع أذونات ملفٍ عبر استدعاء lchmod(2) بشكل متزامن. يعيد هذا التابع القيمة undefined‎.

fs.lchown(path, uid, gid, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.6.0 لم تعد هذه الواجهة البرمجية مهملةً بعد الآن.
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.

يغيِّر هذا التابع المالك والمجموعة المالكة لملف عبر استدعاء lchown(2)‎ بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.

fs.chownSync(path, uid, gid)‎

سجل التغييرات
الإصدار التغييرات
v10.6.0 لم تعد هذه الواجهة البرمجية مهملةً بعد الآن.

يغيِّر هذا التابع المالك والمجموعة المالكة لملف عبر استدعاء lchown(2)‎ بشكل متزامن. يعيد هذا التابع القيمة undefined‎.

fs.link(existingPath, newPath, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.6.0 يمكن الآن أن يكون الوسيط existingPath والوسيط newPath كائنات من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.31 أضيف هذا التابع.

ينشئ هذا التابع وصلةً جديدةً (وصلةً صلبةً) للملف الحالي عبر استدعاء link(2)‎ بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.

fs.linkSync(existingPath, newPath)‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط existingPath والوسيط newPath كائنات من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.31 أضيف هذا التابع.

ينشئ هذا التابع وصلةً جديدةً (وصلةً صلبةً) للملف الحالي عبر استدعاء link(2)‎ بشكل متزامن. يعيد هذا التابع القيمة undefined‎.

fs.lstat(path[, options], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.5.0 يقبل التابع كائن options‎ إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.30 أضيف هذا التابع.
  • path:‏‏ <string>‏ | <Buffer>‏ | <URL>
  • options:‏ <Object>
    • bigint:‏ <boolean> يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن fs.Stats‎ المعاد من النوع bigint. القيمة الافتراضية هي: false‎.
  • callback:‏ <Function>
  • stats:‏ <fs.Stats>

يجلب هذا التابع معلومات حول الملف ذي المسار path‎ عبر استدعاء دالة النظام lstat(2) بشكل غير متزامن. يمرَّر إلى دالة رد النداء وسيطين هما: err‎، و stats‎، إذ stats‎ هو الكائن fs.Stats‎. التابع lstat()‎ ممائلٌ تمامًا للتابع stat()‎ باستثناء أنَّه إذا كان المسار path‎ وصلةً رمزيةً، فستُعاد حينئذٍ معلومات عن الوصلة نفسها وليس عن الملف الذي تشير إليه هذه الوصلة.

fs.lstatSync(path[, options])‎

سجل التغييرات
الإصدار التغييرات
v10.5.0 يقبل التابع كائن options‎ إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.30 أضيف هذا التابع.
  • path:‏‏ <string>‏ | <Buffer>‏ | <URL>
  • options:‏ <Object>
    • bigint:‏ <boolean> يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن fs.Stats‎ المعاد من النوع bigint. القيمة الافتراضية هي: false‎.
  • القيم المعادة: <fs.Stats>

يجلب هذا التابع معلومات حول الملف ذي المسار path‎ عبر استدعاء دالة النظام lstat(2) بشكل متزامن.

fs.mkdir(path[, mode], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.8 أضيف هذا التابع.

ينشئ هذا التابع مجلدًا جديدًا بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. انظر أيضًا الدالة mkdir(2).

fs.mkdirSync(path[, mode])‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.21 أضيف هذا التابع.
  • path:‏‏ <string>‏ | <Buffer>‏ | <URL>
  • mode:‏ <integer> غير مدعوم على ويندوز. القيمة الافتراضية هي: 0o777‎.

ينشئ هذا التابع مجلدًا جديدًا بشكل متزامن. يعيد هذا التابع القيمة undefined‎. هذا التابع هو الإصدار المتزامن من التابع fs.mkdir()‎.

انظر أيضًا الدالة mkdir(2).

fs.mkdtemp(prefix[, options], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v6.2.1 أصبح المعامل callback‎ الآن اختياريًّا.
v5.10.0 أضيف هذا التابع.

ينشئ هذا التابع مجلدًا فريدًا مؤقتًا بشكل غير متزامن.

يولِّد هذا التابع ستة محارف عشوائية لتضاف في نهاية البادئة prefix‎ المطلوبة لإنشاء مجلدٍ فريدٍ مؤقتٍ.

يمرَّر مسار المجلد المُنشَأ كسلسلة نصية إلى المعامل الثاني لدالة رد النداء.

يمكن أن يكون الوسيط options‎ سلسلةً نصيةً تحدِّد الترميز، أو كائنًا مع الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله.

fs.mkdtemp(path.join(os.tmpdir(), 'foo-'), (err, folder) => {
  if (err) throw err;
  console.log(folder);
  // /tmp/foo-itXde2 أو C:\Users\...\AppData\Local\Temp\foo-itXde2 :سيُطبَع
});

سيضيف التابع fs.mkdtemp()‎ المحارف الستة العشوائية المختارة مباشرةً إلى السلسلة prefix‎ النصية. على سبيل المثال، إن كان لدينا المجلد ‎/tmp‎ وأردنا إنشاء مجلد مؤقت داخله، فيجب أن تنتهي البادئة prefix‎ بالفاصلة الزائدة المستعملة عادةً في فصل المسار في المنصة المستعملة آنذاك (require('path').sep‎).

// المجلد الأب للمجلد المؤقت الجديد
const tmpDir = os.tmpdir();

// :*استعمال التابع بهذه الطريقة *غير صحيح
fs.mkdtemp(tmpDir, (err, folder) => {
  if (err) throw err;
  console.log(folder);
  // `/tmpabc123` سيطبع شيء شبيه بالقيمة
  // ينشأ المجلد المؤقت الجديد في نظام الملفات الجذر
  // /tmp بدلًا من إنشائه *ضمن* المجلد
});

// :*استعمال التابع بهذه الطريقة هو *الصحيح
const { sep } = require('path');
fs.mkdtemp(`${tmpDir}${sep}`, (err, folder) => {
  if (err) throw err;
  console.log(folder);
  // `/tmp/abc123` سيطبع شيء شبيه بالقيمة
  // أنشئ المجلد المؤقت الجديد ضمن
  // كما هو مطلوب /tmp المجلد
});

fs.mkdtempSync(prefix[, options])‎

أضيف في الإصدار: v5.10.0.

ينشئ هذا التابع مجلدًا مؤقتًا فريدًا بشكل متزامن.

لمزيد من المعلومات، اطلع على توثيق الإصدار الغير متزامن من هذا التابع الذي هو fs.mkdtemp()‎.

يمكن أن يكون الوسيط options‎ سلسلةً نصيةً تحدِّد الترميز، أو كائنًا مع الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله.

fs.open(path, flags[, mode], callback)‎

سجل التغييرات
الإصدار التغييرات
v9.9.0 أصبح الوضعان <code>as‎</code> و <code>as+‎</code> مدعومين الآن.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.0.2 أضيف هذا التابع.

يفتح هذا التابع ملفًا بشكل غير متزامن. اطلع على دليل الدالة open(2)‎.

يضبط الوسيط mode‎ نمط الملف (الأذونات والبتات اللاصقة [sticky bits]) في حال لم يكن الملف موجودًا وأنشئ آنذاك. في ويندوز، يمكن التلاعب بإذن الكتابة فقط. اطلع على توثيق التابع fs.chmod()‎. تأخذ دالة رد النداء وسيطين هما: err‎ و fd‎. تعدُّ بعض المحارف (مثل < > : " / \ | ? *‎) محجوزةً في ويندوز كما أشير إلى ذلك التوثيق «تسمية الملفات، والمسارات، ومجالات الأسماء». في نظام الملفات NTFS، إن احتوى اسم الملف نقطتين رأسيتين، فستفتح Node.js مجرًى في نظام الملفات كما موضح في هذه الصفحة.

التوابع التي تعتمد على التابع fs.open()‎ تسلك السلوك نفسه أيضًا مثل التابع fs.writeFile()‎ و التابع fs.readFile()‎ ...إلخ.

‎fs.openSync(path, flags[, mode])‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.21 أضيف هذا التابع.

يفتح هذا التابع ملفًا بشكل متزامن. اطلع على دليل الدالة open(2)‎.

لمزيدٍ من التفاصيل، اطلع على الإصدار غير المتزامن لهذا التابع الذي هو fs.open()‎.

fs.read(fd, buffer, offset, length, position, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.10.0 يمكن الآن أن يكون المعامل buffer‎ كائنًا من النوع TypedArray‎ أو DataView‎.
v7.4.0 يمكن الآن أن يكون المعامل buffer‎ كائنًا من النوع Uint8Array.
v6.0.0 يمكن أن يأخذ المعامل length‎  الآن القيمة 0.
v0.0.2 أضيف هذا التابع.
  • fd:‏‏ <string>
  • buffer:‏ <Buffer>‏ | <TypedArray>‏ | <DataView> يمثِّل ذاكرة التخزين المؤقتة التي ستُكتَب فيها البيانات المقروءة من الملف.
  • offset:‏ <integer> عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في ذاكرة التخزين المؤقتة buffer‎ (أي مقدار الإزاحة من بدياتها).
  • length:‏ <integer> عددٌ صحيحٌ يحدِّد عدد البايتات المراد قراءتها من الملف.
  • position:‏ <integer> عددٌ صحيحٌ يحدِّد موضع بداية قراءة البيانات من الملف. إن كانت قيمة هذا الوسيط null‎، فستُقرَأ البيانات بدءًا من موضع المؤشر الحالي في الملف ثم سيُحدَّث موضع مؤشِّر الملف بعد انتهاء عملية القراءة. إن كانت قيمة هذا الوسيط عددًا صحيحًا، فسيبقى موضع مؤشِّر الملف دون تغيير.
  • callback:‏ <Function>

يقرأ هذا التابع البيانات من الملف المحدَّد في واصف الملف fd‎ المعطى.

تأخذ دالة رد النداء ثلاثة وسائط هي: err‎ و bytesRead‎ و buffer‎.

إن استدعي هذا التابع مثل نظيره util.promisify()‎، فسيُعيد كائنًا من النوع Promise‎ لكائن Object‎ مع الخاصيتين bytesRead و buffer.

fs.readdir(path[, options], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.10.0 أضيف الخيار withFileTypes‎.
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v6.0.0 أضيف المعامل options.
v0.1.8 أضيف هذا التابع.

يقرأ هذا التابع محتوى المجلد المحدَّد في المسار عبر تنفيذ الدالة readdir(3) بشكل غير متزامن. يمُرَّر إلى دالة رد النداء وسيطين هما: err‎ و files‎، إذ files‎ هو مصفوفةٌ من أسماء الملفات في المجلد باستثناء المجلد '.'‎ والمجلد '..'‎.

يمكن أن يكون الوسيط options‎ الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله لأسماء الملفات الممرَّرة إلى دالة رد النداء. إن ضُبطَت الخاصية encoding‎ إلى القيمة 'buffer'، فستُمرَّر أسماء الملفات المعادة ككائنات من النوع Buffer‎.

إن ضُبِط الخيار options.withFileTypes‎ إلى القيمة true‎، فستحوي المصفوفة files‎ الكائنات fs.Diret‎.

fs.readdirSync(path[, options])‎

سجل التغييرات
الإصدار التغييرات
v10.10.0 أضيف الخيار withFileTypes‎.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.21 أضيف هذا التابع.

يقرأ هذا التابع محتوى المجلد المحدَّد في المسار عبر تنفيذ الدالة readdir(3)‎ بشكل متزامن.

يمكن أن يكون الوسيط options‎ الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله لأسماء الملفات الممرَّرة إلى دالة رد النداء. إن ضُبطَت الخاصية encoding‎ إلى القيمة 'buffer'، فستُمرَّر أسماء الملفات المعادة ككائنات من النوع Buffer‎.

إن ضُبِط الخيار options.withFileTypes‎ إلى القيمة true‎، فسيحوي الناتج الكائنات fs.Diret‎.

‎fs.readFile(path[, options], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v5.1.0 سيستدعى رد النداء callback‎ مع القيمة null‎ بوصفها قيمة للمعامل error‎ في حال نجاح العملية.
v5.0.0 يمكن أن يكون المعامل path‎ واصف ملفٍ الآن.
v0.1.29 أضيف هذا التابع.

يقرأ هذا التابع كامل محتوى الملف ذي المسار path‎ بشكل غير متزامن.

fs.readFile('/etc/passwd', (err, data) => {
  if (err) throw err;
  console.log(data);
});

يمُرَّر إلى دالة رد النداء وسيطين هما: err‎ أو data‎، إذ data‎ هو المحتوى المقروء من الملف. إن لم يُحدَّد أي ترميز، فسيكون نوع الوسيط data‎ هو كائنٌ من النوع Buffer‎. إن كان الوسيط options‎ سلسلة نصية، فسيُحدِّد حينئذٍ الترميز:

fs.readFile('/etc/passwd', 'utf8', callback);

عندما يكون المسار path‎ مجلدًا، سيختلف سلوك التابع fs.readFile()‎ والتابع fs.readFileSync()‎ اعتمادًا على المنصة المستعملة؛ في أنظمة التشغيل macOS، ولينكس، وويندوز، سيؤدي ذلك إلى رمي خطأ. أمَّا في FreeBSD، فسيعاد تمثيلٌ بمحتوى المجلد.

// macOS, Linux, and Windows
fs.readFile('<directory>', (err, data) => {
  // => [Error: EISDIR: illegal operation on a directory, read <directory>]
});

//  FreeBSD
fs.readFile('<directory>', (err, data) => {
  // => null, [[JavaScript/Date|<Date>]]
});

يجب على واصف الملف المحدَّد أن يدعم عملية القراءة.

إن حُدِّد واصف ملفٍ كمسار path‎، فلن يُغلَق الملف تلقائيًّا بعد انتهاء العملية.

يُخزِّن التابع fs.readFile()‎ كامل محتوى الملف في الذاكرة مؤقتًا. لتقليل الحجم المستهلك من الذاكرة، يفضل استعمال المجرى عبر fs.createReadStream()‎ إن كان ذلك ممكنًا.

fs.readFileSync(path[, options])‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v5.0.0 يمكن أن يكون المعامل path‎ واصف ملفٍ الآن.
v0.1.29 أضيف هذا التابع.

يقرأ هذا التابع كامل محتوى الملف ذي المسار path‎ بشكل متزامن ثمَّ يعيده.

لمزيدٍ من التفاصيل، اطلع على الإصدار غير المتزامن من هذا التابع الذي هو fs.readFile().

إن لم يُحدَّد أي ترميز، فسيُعاد كائنٌ من النوع Buffer‎. أمَّا إن حُدِّد الخيار encoding، فستُعاد سلسلةٌ نصيةٌ حينئذٍ.

بشكل مشابه للتابع fs.readFile()، عندما يكون المسار path‎ مجلدًا، فسيختلف سلوك التابع fs.readFile() والتابع fs.readFileSync()‎ اعتمادًا على المنصة المستعملة؛ في أنظمة التشغيل macOS، ولينكس، وويندوز، سيؤدي ذلك إلى رمي خطأ. أما في FreeBSD، فسيعاد تمثيلٌ بمحتوى المجلد.

// macOS, Linux, and Windows
fs.readFileSync('<directory>');
// => [Error: EISDIR: illegal operation on a directory, read <directory>]

//  FreeBSD
fs.readFileSync('<directory>'); // => [[JavaScript/Date|<Date>]]

fs.readlink(path[, options], callback)‎

الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.1.31 أضيف هذا التابع.

يقرأ هذا التابع محتوى الوصلة الرمزية ذات المسار path‎ عبر استدعاء الدالة readlink(2)‎ بشكل غير متزامن.

يمرَّر دالة رد النداء وسيطين هما: err‎، و linkString‎.

يمكن أن يكون الوسيط options‎ الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله مع مسار الوصلة الممرَّر إلى دالة رد النداء. إن ضُبطَت الخاصية encoding‎ إلى القيمة 'buffer'، فسيُمرَّر مسار الوصلة المعاد ككائن من النوع Buffer‎.

‎fs.readlinkSync(path[, options])‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.31 أضيف هذا التابع.

يقرأ هذا التابع محتوى الوصلة الرمزية ذات المسار path‎ عبر استدعاء الدالة readlink(2)‎ بشكل متزامن. يمكن أن يكون الوسيط options‎ الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله مع مسار الوصلة المعاد. إن ضُبطَت الخاصية encoding‎ إلى القيمة 'buffer'‎، فسيُمرَّر مسار الوصلة المعاد ككائن من النوع Buffer‎.

fs.readSync(fd, buffer, offset, length, position)‎

سجل التغييرات
الإصدار التغييرات
v10.10.0 يمكن الآن أن يكون المعامل buffer‎ كائنًا من النوع TypedArray‎ أو DataView‎.
v6.0.0 يمكن أن يأخذ المعامل length‎ الآن القيمة 0.
v0.1.21 أضيف هذا التابع.
  • fd:‏‏ <string>
  • buffer:‏ <Buffer>‏ | <TypedArray>‏ | <DataView> يمثِّل ذاكرة التخزين المؤقتة التي ستُكتَب فيها البيانات المقروءة من الملف.
  • offset:‏ <integer> عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في ذاكرة التخزين المؤقتة buffer‎ (أي مقدار الإزاحة من بدياتها).
  • length:‏ <integer> عددٌ صحيحٌ يحدِّد عدد البايتات المراد قراءتها من الملف.
  • position:‏ <integer> عددٌ صحيحٌ يحدِّد موضع بداية قراءة البيانات من الملف. إن كانت قيمة هذا الوسيط null‎، فستُقرَأ البيانات بدءًا من موضع المؤشر الحالي في الملف ثم سيُحدَّث موضع مؤشِّر الملف بعد انتهاء عملية القراءة. إن كانت قيمة هذا الوسيط عددًا صحيحًا، فسيبقى موضع مؤشِّر الملف دون تغيير.
  • القيم المعادة: <number>

يقرأ هذا التابع البيانات من الملف المحدَّد في واصف الملف fd‎ المعطى ويضعها في المخزن buffer‎ ثم يعيد عدد البايتات المقروءة.

لمزيد من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو fs.read()‎.

fs.realpath(path[, options], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v8.0.0 أضيف دعمٌ لاستبيان أنبوب أو مقبس.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v6.4.0 أصبح استدعاء هذا التابع يعمل مجدَّدًا لمختلف الحالات الحدية في ويندوز.
v6.0.0 حُذِف المعامل cache‎.
v0.1.31 أضيف هذا التابع.

يحسب هذا التابع اسم المسار الأساسي (canonical pathname) بشكل غير متزامن عبر استبيان .‎، و ..‎، والوصلات الرمزية. ليس بالضرورة أن يكون اسم المسار المتعارف عليه فريدًا. يمكن للوصلات الصلبة ونظام الملفات الموصول (عبر الأمر mount) أن يكشفا عن نظام ملفات عبر أسماء مسارات متعددة. يسلك هذا التابع نفس سلوك الدالة realpath(3)‎ باستثناء بعض الأمور منها:

  • لا تجرى أية عملية تحويل لحالة الأحرف على أنظمة الملفات الغير حساسة لحالة الأحرف.
  • يعتمد العدد الأقصى للوصلات الرمزية على المنصة المستعملة، ويكون غالبًا أكبر بكثير من العدد الذي يدعمه تنفيذ realpath(3)‎.

يمرَّر إلى دالة رد النداء وسيطين هما: err‎، و resolvedPath‎. قد يُستخدَم process.cwd‎ لاستبيان المسارات النسبية. المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزة بالترميز UTF8 فقط. يمكن أن يكون الوسيط options‎ الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله مع المسار الممرَّر إلى دالة رد النداء. إن ضُبطَت الخاصية encoding‎ إلى القيمة 'buffer'، فسيُمرَّر المسار المعاد ككائن من النوع Buffer‎. إن استبين المسار إلى مقبسٍ أو أنبوبٍ، فسيعيد هذا التابع اسمًا يعتمد على النظام لذلك الكائن.

fs.realpath.native(path[, options], callback)‎

أضيف في الإصدار: v9.2.0.

يعيد هذا التابع المسار الأساسي المطلق للمسار path‎ عبر تنفيذ realpath(3)‎ بشكل غير متزامن. يمرَّر إلى دالة رد النداء وسيطين هما: err‎، و resolvedPath‎. المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزة بالترميز UTF8 فقط. يمكن أن يكون الوسيط options‎ الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله مع المسار الممرَّر إلى دالة رد النداء. إن ضُبطَت الخاصية encoding‎ إلى القيمة 'buffer'، فسيُمرَّر المسار المعاد ككائن من النوع Buffer‎. في لينكس، عندما تُربَط Node.js مع المكتبة musl libc، يجب أن يوصل (mount) نظام الملفات procfs في ‎/proc‎ لكي يعمل هذا التابع بشكل صحيح. أما المكتبة glibc، فلا تشترط ذلك.

fs.realpathSync(path[, options])‎

سجل التغييرات
الإصدار التغييرات
v8.0.0 أضيف دعمٌ لاستبيان أنبوب أو مقبس.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v6.4.0 أصبح استدعاء هذا التابع يعمل مجدَّدًا لمختلف الحالات الحدية في ويندوز.
v6.0.0 حُذِف المعامل cache‎.
v0.1.31 أضيف هذا التابع.

يعيد هذا التابع اسم المسار المستبين. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو fs.realpath()‎.

fs.realpathSync.native(path[, options])‎

أضيف في الإصدار: v9.2.0.

يعيد هذا التابع المسار الأساسي المطلق للمسار path‎ عبر تنفيذ realpath(3) بشكل متزامن. المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزةً بالترميز UTF8 فقط. يمكن أن يكون الوسيط options‎ الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله مع المسار المعاد. إن ضُبطَت الخاصية encoding‎ إلى القيمة 'buffer'، فسيُمرَّر المسار المعاد ككائن من النوع Buffer‎. في لينكس، عندما تُربَط Node.js مع المكتبة musl libc، يجب أن يوصل (mount) نظام الملفات procfs في ‎/proc‎ لكي يعمل هذا التابع بشكل صحيح. أمَّا المكتبة glibc، فلا تشترط ذلك.

fs.rename(oldPath, newPath, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.6.0 يمكن الآن أن يكون الوسيط oldPath والوسيط newPath كائنات من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.0.2 أضيف هذا التابع.

يغيِّر هذا التابع اسم الملف oldPath‎ إلى newPath‎ المعطى بشكل غير متزامن. إن كان الملف newPath‎ موجودًا من قبل، فسيُستبدَل آنذاك. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. انظر أيضًا دالة النظام rename(2).

fs.rename('oldFile.txt', 'newFile.txt', (err) => {
  if (err) throw err;
  console.log('Rename complete!');
});

‎fs.renameSync(oldPath, newPath)‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط oldPath والوسيط newPath كائنات من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.21 أضيف هذا التابع.

يغيِّر هذا التابع اسم الملف oldPath‎ إلى newPath‎ المعطى بشكل متزامن. إن كان الملف newPath‎ موجودًا من قبل، فسيُستبدَل آنذاك. انظر أيضًا دالة النظام rename(2).

‎fs.rmdir(path, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.0.2 أضيف هذا التابع.

يحذف هذا التابع المجلد ذا المسار path‎ عبر استدعاء rmdir(2)‎ بشكل غير متزامن. يؤدي استعمال التابع fs.rmdir()‎ مع ملف (وليس مجلد) إلى حصول الخطأ ENOENT‎ في ويندوز والخطأ ENOTDIR‎ في أنظمة POSIX.

‎fs.rmdirSync(path)‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.21 أضيف هذا التابع.

يحذف هذا التابع المجلد ذا المسار path‎ عبر استدعاء rmdir(2)‎ بشكل متزامن. يؤدي استعمال التابع fs.rmdirSync()‎ مع ملف (وليس مجلد) إلى حصول الخطأ ENOENT‎ في ويندوز والخطأ ENOTDIR‎ في أنظمة POSIX.

‎fs.stat(path[, options], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.5.0 يقبل التابع كائن options‎ إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.0.2 أضيف هذا التابع.
  • path:‏ <string>‏ | <Buffer>‏ | <URL>
  • options:‏ <Object>
    • bigint:‏ <boolean> يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن fs.Stats‎ المعاد من النوع bigint. القيمة الافتراضية هي: false‎.
  • callback:‏ <Function>
  • stats:‏ <fs.Stats>

يجلب هذا التابع معلومات حول الملف ذي المسار path‎ عبر استدعاء دالة النظام stat(2)‎ بشكل غير متزامن. يمرَّر إلى دالة رد النداء وسيطين هما: err‎، و stats‎، إذ stats‎ هو الكائن fs.Stats‎. إن حصل خطأ، سيكون err.code‎ أحد أخطاء النظام الشائعة. لا ينصح باستعمال التابع fs.stat()‎ للتحقق من وجود الملف قبل استدعاء fs.open()‎، أو fs.readFile()‎، أو fs.writeFile()‎. بدلًا من ذلك، يجب على شيفرة المستخدم فتح الملف والقراءة منه أو الكتابة عليه مباشرةً ومعالجة الخطأ المرمي إن لم يكن الملف موجودًا. للتحقق من وجود ملفٍ دون التعديل عليه بعد ذلك، ينصح باستعمال التابع fs.access()‎.

fs.statSync(path[, options])‎

سجل التغييرات
الإصدار التغييرات
v10.5.0 يقبل التابع كائن options‎ إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.21 أضيف هذا التابع.
  • path:‏ <string>‏ | <Buffer>‏ | <URL>
  • options:‏ <Object>
    • bigint:‏ <boolean> يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن fs.Stats‎ المعاد من النوع bigint. القيمة الافتراضية هي: false‎.
  • القيم المعادة: <fs.Stats>

يجلب هذا التابع معلومات حول الملف ذي المسار path‎ عبر استدعاء دالة النظام stat(2)‎ بشكل متزامن.

fs.symlink(target, path[, type], callback)‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط target والوسيط path كائنات من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.31 أضيف هذا التابع.

ينشئ هذا التابع وصلة رمزيَّةً لملف المحدد بالمسار target‎ عبر استدعاء symlink(2) بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. يمكن ضبط الوسيط type‎ إلى القيمة 'dir'، أو 'file'، أو 'junction' وهو متاح في ويندوز فقط (يُتجاهل في المنصات الأخرى). تتطلب نقاط الوصل (junction points) في ويندوز أن يكون المسار الهدف مطلقًا. عند استعمال 'junction'، فسيحول الوسيط target‎ تلقائيًّا إلى مسار مطلق. إليك هذا المثال الذي سيُنشأ وصلة رمزية تدعى "new-port" تشير إلى الملف "foo":

fs.symlink('./foo', './new-port', callback);

fs.symlinkSync(target, path[, type])‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط target والوسيط path كائنات من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.31 أضيف هذا التابع.

ينشئ هذا التابع وصلة رمزيَّةً لملف المحدد بالمسار target‎ عبر استدعاء symlink(2) بشكل متزامن. لمزيد من التفاصيل، ارجع إلى الإصدار الغير متزامن من هذا التابع الذي هو fs.symlink().

‎fs.truncate(path[, len], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.8.6 أضيف هذا التابع.

يقطع هذا التابع الملف ذا المسار path إلى الحجم len‎ عبر استدعاء دالة النظام truncate(2) بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. كان بالإمكان أن يُمرَّر واصف ملف كوسيط أول أيضًا، وسيستدعى في هذه الحالة التابع fs.ftruncate()، إلا أنه ذلك قد أُهمِل وقد يؤدي إلى رمي خطأ في المستقبل.

‎fs.truncateSync(path[, len])‎

أضيف في الإصدار: v0.8.6.

يقطع هذا التابع الملف ذا المسار path إلى الحجم len‎ عبر استدعاء دالة النظام truncate(2) بشكل متزامن. كان بالإمكان أن يُمرَّر واصف ملف كوسيط أول أيضًا، وسيستدعى في هذه الحالة التابع fs.ftruncate()‎، إلا أنه ذلك قد أُهمِل وقد يؤدي إلى رمي خطأ في المستقبل.

fs.unlink(path, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.0.2 أضيف هذا التابع.

يزيل هذا التابع ملفًا أو وصلةً رمزيةً بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.

// هو ملف طبيعي 'path/file.txt' بفرض أن  الملف
fs.unlink('path/file.txt', (err) => {
  if (err) throw err;
  console.log('path/file.txt was deleted');
});

لن يعمل التابع fs.unlink()‎ إن كان المسار فارغًا أو يشير إلى مجلد أو غير ذلك من الحالات. إن أردت حذف مجلد، فاستعمل التابع fs.rmdir()‎. انظر أيضًا دالة النظام unlink(2).

fs.unlinkSync(path)‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.21 أضيف هذا التابع.

يزيل هذا التابع ملفًا أو وصلةً رمزيةً بشكل غير متزامن. يعيد هذا التابع القيمة undefined‎. انظر أيضًا دالة النظام unlink(2).

fs.unwatchFile(filename[, listener])‎

أضيف في الإصدار: v0.1.31.

  • filename:‏ <string>‏ | <Buffer>‏ | <URL>
  • path:‏ <Function>‏ وسيط اختياري يمثل المستمع السابق الذي ربط باستعمال fs.watchFile()‎.

يوقف هذا التابع عملية مراقبة التغييرات التي تحصل في الملف filename‎. إن أعطي الوسيط listener‎، فسيحذف التابع هذا المستمع المحدد فقط. خلا ذلك، سيزيل جميع المستمعين موقفًا عملية مراقبة الملف filename‎ بشكل فعَّال. يمثِّل استدعاء التابع fs.unwatchFile()‎ مع اسم ملف لا يراقب آنذاك عمليةً فارغةً ولا يعد ذلك خطأً. يعدُّ استعمال التابع fs.watch()‎ أكثر فاعليةً من استعمال fs.watchFile()‎، و fs.unwatchFile()‎. يجب أن يُستعمَل التابع fs.watch()‎ بدلًا من التابع fs.watchFile()‎، و fs.unwatchFile()‎ ما أمكن ذلك.

fs.utimes(path, atime, mtime, callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v8.0.0 لا يُسمَح بعد الآن بأن تُستعمَل القيمة NaN‎، والقيمة Infinity‎، والقيمة Infinity- لتكون محدِّدات للوقت (time specifiers).
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v4.1.0 يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة NaN‎، والقيمة Infinity‎ لتكون محدِّدات للوقت (time specifiers).
v0.4.2 أضيف هذا التابع.

يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار المعطى بشكل غير متزامن. يخضع الوسيطان atime‎ و mtime‎ إلى القاعدتين التاليتين:

  • يمكن أن تكون القيم إما أعدادًا تمثل الوقت في توقيت يونكس (Unix epoch time)، أو التواريخ، أو سلاسل نصية عددية مثل '123456789.0'‎.
  • إن لم يكن بالإمكان تحويل القيمة إلى عددٍ، أو كانت NaN‎ أو Infinity‎ أو -Infinity‎، فسيُرمَى خطأٌ.

‎fs.utimesSync(path, atime, mtime)‎

سجل التغييرات
الإصدار التغييرات
v8.0.0 لا يُسمَح بعد الآن بأن تُستعمَل القيمة NaN‎، والقيمة Infinity‎، والقيمة Infinity- لتكون محدِّدات للوقت (time specifiers).
v7.6.0 يمكن الآن أن يكون الوسيط path كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v4.1.0 يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة NaN‎، والقيمة Infinity‎ لتكون محدِّدات للوقت (time specifiers).
v0.4.2 أضيف هذا التابع.

يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار المعطى بشكل متزامن. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو fs.utimes()‎.

fs.watch(filename[, options][, listener])‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط filename كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v7.0.0 لن يُعدَّل الكائن options‎ المُمرَّر مطلقًا.
v0.5.10 أضيف هذا التابع.
  • filename:‏ <string>‏ | <Buffer>‏ | <URL>
  • options:‏ <string>‏ | <Object>
    • persistent:‏ <boolean> يحدِّد إن كان يجب أن تستمر العملية بالعمل ما دامت عملية مراقبة الملف مستمرة. القيمة الافتراضية هي: true‎.
    • recursive:‏ <boolean> يحدِّد إن كان يجب مراقبة جميع المجلدات الفرعية أيضًا أم يجب مراقبة المجلد المحدد فقط. يُستعمَل هذا الخيار عندما يراد مراقبة مجلد، ولا يعمل إلا على المنصات المدعومة (اطلع على «تحذيرات يجب أخذها بالحسبان» في الأسفل). القيمة الافتراضية هي: false‎.
    • encoding:‏ <string> يحدد ترميز المحارف المراد استعماله من أجل اسم الملف الممرر إلى المستمع. القيمة الافتراضية هي: 'utf8'.
  • listener:‏ <Function>‏ | <undefined> القيمة الافتراضية هي: undefined‎.
  • القيم المعادة: <fs.FSWatcher>

ينشئ هذا التابع عملية مراقبة على filename‎ لمراقبة جميع التغييرات الحاصلة، إذ إما أن يكون filename‎ ملفًا أو مجلدًا. الوسيط options‎ الممرر إلى هذا التابع اختياري. إن أعطي وكان سلسلة نصية، فسيُحدِّد حينئذٍ الترميز encoding‎ المراد استعماله. خلا ذلك، يجب تمرير الوسيط options‎ ككائن. يمرَّر إلى دالة رد النداء التي تمثل المستمع (listener) وسيطان هما: eventType‎ و filename‎؛ يأخذ الوسيط eventType‎‎ إما القيمة 'rename' أو القيمة 'change'، بينما يمثل الوسيط filename‎ اسم الملف الذي أطلَق الحدث. في أغلب منصات التشغيل، يُطلَق الحدث 'rename' متى ما ظهر اسم الملف أو اختفى في المجلد. يُربَط رد النداء المستمع مع الحدث 'change' الذي يُطلَق عبر fs.FSWatcher‎، ولكن هذا الحدث لا يشبه القيمة 'change' الممررة إلى الوسيط eventType‎.

تحذيرات يجب أخذها بالحسبان

الواجهة البرمجية fs.watch‎ ليست ثابتة 100% عبر جميع المنصات، إذ تكون غير متوافرة في بعض الحالات. الخيار recursive‎ مدعومٌ فقط في macOS وويندوز.

التوافر

تعتمد هذه الميزة على نظام التشغيل بشكل أساسي الذي يوفر طريقةً للتنبيه بالتغيُّرات التي تحصل في نظام الملفات.

  • في أنظمة لينكس، يُستعمَل inotify(7)‎.
  • في أنظمة BSD، يُستعمَل kqueue(2).
  • في أنظمة macOS، يُستعمَل kqueue(2) للملفات و FSEvents‎ للمجلدات.
  • في أنظمة SunOS (بما فيها Solaris و SmartOS)، يُستعمَل منافذ الحدث (event ports).
  • في أنظمة ويندوز، تعتمد هذه الميزة على ReadDirectoryChangesW‎.
  • في أنظمة Aix، تعتمد هذه الميزة على AHAFS‎ التي يجب تفعليها.

الوظيفة الأساسية غير متوافرة لعدة أسباب، لذا لن يستطيع fs.watch‎ أن يؤدي وظيفته. على سبيل المثال، يمكن أن تكون عملية مراقبة ملفات أو مجلدات غير جديرة بالثقة، أو مستحيلة في بعض الحالات، في أنظمة ملفات الشكبة (مثل NFS، أو SMB، وغيرها) أو أنظمة ملفات المضيف عند استعمال تطبيقات افتراضية مثل Vagrant، أو Docker وغيرهما. لا يزال بالإمكان استعمال fs.watchFile()‎ الذي يستعمل «استطلاع الحالة» (stat polling) إلا أن هذه الطريقة أبطأ وذات وثوقية أقل.

مؤشرات الفهرسة (Inodes)

في أنظمة لينكس و macOS، يستبين التابع fs.watch()‎ المسار إلى قيمة مؤشر الفهرسة (inode) ويراقب هذا المؤشر. إن حذف المسار الذي يخضع للمراقبة، فسيُسنَد إلى مؤشر فهرسة جديد. سيُطلِق المراقب حدثًا يتعلق بأمر الحذف الذي حصل، ولكنه سيستمر بعملية مراقبة مؤشر الفهرسة الأصلي (original inode). لن تُطلَق أية أحداث لمؤشر الفهرسة الجديد، لذا يجب أن يكون هذا متوقعًا. تحتفظ ملفات AIX بمؤشر الفهرسة نفسه خلال دورة حياة الملف. حفظ وإغلاق ملف مراقب في AIX سيؤدي إلى إطلاق تنبيهين أحدهما من أجل إضافة محتوى جديد والآخر من أجل الاقتطاع (truncation).

الوسيط filename‎

تمرير الوسيط filename‎ إلى دالة رد النداء مدعومٌ فق لينكس، وويندوز، و macOS، و AIX فقط. حتى في الأنظمة المدعومة، لا يُضمَن أن يُعطَى الوسيط filename‎ دومًا؛ نتيجةً لذلك، لا تفترض أن الوسيط filename‎ معطًى دومًا في رد النداء، وليكن هنالك احتمالية التراجع المنطقي في الشيفرة إن كانت قيمته null‎.

fs.watch('somedir', (eventType, filename) => {
  console.log(`event type is: ${eventType}`);
  if (filename) {
    console.log(`filename provided: ${filename}`);
  } else {
    console.log('filename not provided');
  }
});

fs.watchFile(filename[, options], listener)‎

سجل التغييرات
الإصدار التغييرات
v7.6.0 يمكن الآن أن يكون الوسيط filename كائنًا من النوع URL‎ متوافق مع WHATWG باستعمال البروتوكول file:‎. ما زال هذا الدعم قيد التجريب.
v0.1.31 أضيف هذا التابع.
  • filename:‏ <string>‏ | <Buffer>‏ | <URL>
  • options:‏ <string>‏ | <Object>
    • persistent:‏ <boolean> يحدِّد إن كان يجب أن تستمر العملية بالعمل ما دامت عملية مراقبة الملف مستمرة. القيمة الافتراضية هي: true‎.
    • interval:‏ <string>
  • listener:‏ <Function>
    • current:‏ <fs.Stats>
    • previous:‏ <fs.Stats>

يراقب هذا التابع التغيرات التي تحصل على filename‎. سيُستدعى رد النداء listener‎ في كل مرة يتم فيها الوصول إلى الملف. يمكن عدم تمرير الوسيط options‎. إن أعطي، فيجب أن يكون كائنًا. قد يحوي الكائن options‎ قيمة منطقية تدعى persistent‎ تحدِّد إن كان يجب أن تستمر العملية بالعمل ما دامت عملية مراقبة الملف مستمرة. قد يحدِّد الكائن options‎ الخاصية interval‎ التي تشير إلى عدد المرات التي يجب فيها أن يُستطلَع الهدف بالميلي ثانية. يمرَّر إلى رد النداء listener‎ وسيطان هما الكائن fs.Stats‎ الذي يمثل الحالة الحالية، والكائن fs.Stats‎ الذي يمثل الحالة السابقة.

fs.watchFile('message.text', (curr, prev) => {
  console.log(`the current mtime is: ${curr.mtime}`);
  console.log(`the previous mtime was: ${prev.mtime}`);
});

إنَّ كلًا من كائني الحالة هذين هو نسخةٌ من fs.Stat‎. للحصول على تنبيهات عند تعديل الملف وليس عند الوصول إليه، إنَّه من الضروري الموازنة بين curr.mtime‎ و prev.mtime‎. عندما تصادف عملية مراقبة ملف باستعمال التابع fs.watchFile()‎ الخطأ ENOENT‎، سيستدعي التابع آنذاك رد النداء listener‎ مرة واحدة مع تصفير جميع الحقول للكائنين الممرَّرين إليه (أو ضبطها إلى تاريخ البداية في يونكس بالنسبة للتواريخ). في ويندوز، ستكون قيمة الحقلين blksize‎ و blocks‎ هي ‎undefined‎ بدلًا من الصفر. إن أنشئ الملف في وقت لاحق، فسيُستدعَى رد النداء listener‎ مجدَّدًا مع تمرير الكائنين الذين يحويان أحدث معلومات عن الحالة (stat). أصبح هذا التغير في سلوك التابع معتمدًا بدءًا من الإصدار v0.10. يعدُّ استعمال التابع fs.watch()‎ أكثر فاعليةً من استعمال fs.watchFile()‎، و fs.unwatchFile()‎. يجب أن يُستعمَل التابع fs.watch()‎ بدلًا من التابع fs.watchFile()‎، و fs.unwatchFile()‎ ما أمكن ذلك. عندما يختفي ملفٌ يخضع للمراقبة عبر fs.watchFile()‎ ويظهر مجدَّدًا، ستكون حينئذٍ الحالة السابقة (previousStat) المُبلَّغ عنها في الحدث الثاني لرد النداء (إعادة ظهور الملف) نفس الحالة السابقة للحدث الأول لرد النداء (اختفاء الملف). هذا يحدث عندما:

  • يُحذَف الملف ثم يُتبَع بتنفيذ عملية استعادة له، أو
  • يعاد تسمية الملف مرتين، إذ يعاد تسمية الملف في المرة الثانية إلى اسمه الأصلي.

fs.write(fd, buffer[, offset[, length[, position]]], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.10.0 يمكن أن يكون المعامل buffer الآن كائنًا من النوع TypeError‎ أو النوع DataView‎.
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.4.0 يمكن الآن أن يكون المعامل buffer‎ كائنًا من النوع Uint8Array.
v7.2.0 أصبح تمرير المعاملين offset‎ و length‎ اختياريًّا الآن.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.0.2 أضيف هذا التابع.
  • fd:‏‏ <integer>
  • buffer:‏ <Buffer>‏ | <TypedArray>‏ | <DataView> يمثِّل جزءًا من ذاكرة التخزين المؤقتة التي ستُقرَأ منها البيانات المراد كتابتها في الملف.
  • offset:‏ <integer> عددٌ صحيحٌ يحدِّد جزء البيانات من ذاكرة التخزين المؤقتة buffer‎ المراد كتابته.
  • length:‏ <integer> عددٌ صحيحٌ يحدِّد عدد البايتات المراد كتابتها في الملف.
  • position:‏ <integer> عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان typeof position !=='number'‎، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة pwrite(2)‎.
  • callback:‏ <Function>

يكتب هذا التابع البيانات المحددة في الذاكرة buffer‎ في الملف ذي الواصف fd‎ المعطى. تأخذ دالة رد النداء ثلاثة وسائط هي: err‎ و bytesWritten و buffer‎، إذ يحدد bytesWritten‎ عدد البايتات التي كُتبَت من buffer‎. إن استدعي هذا التابع مثل نظيره util.promisify()‎، فسيُعيد كائنًا من النوع Promise‎ لكائن Object‎ مع الخاصيتين bytesWritten و buffer. إنه من غير الآمن استدعاء التابع fs.write()‎ عدة مرات مع نفس الملف دون انتظار رد النداء. في مثل هذه الحالة، يُنصَح باستعمال التابع fs.createWriteStream()‎. في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط position‎ وستضيف البيانات إلى نهاية الملف دومًا.

fs.write(fd, string[, position[, encoding]], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.2.0 أصبح تمرير المعامل position اختياريًّا الآن.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v0.11.5 أضيف هذا التابع.
  • fd:‏‏ <integer>
  • string:‏ <string>‏ سلسلة نصية تحوي البيانات المراد كتابتها في الملف.
  • position:‏ <integer> عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان typeof position !== 'number'‎، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة pwrite(2).
  • encoding:‏‏ <string>‏ يمثِّل الترميز المتوقع للسلسلة النصية. القيمة الافتراضية هي: 'utf8'.
  • callback:‏ <Function>

يكتب هذا التابع البيانات الموجودة في السلسلة النصية string في الملف ذي الواصف fd‎ المعطى بشكل غير متزامن. إن لم يكون الوسيط string‎ سلسلةً نصيةً، فستُحوَّل حينئذٍ القيمة رغمًا عنها إلى الواحد. تأخذ دالة رد النداء ثلاثة وسائط هي: err‎ و written و string، إذ يحدد written عدد بايتات السلسلة النصية المعطاة المطلوب كتابتها في الملف. لا يُشترَط أن تكون البايتات المكتوبة في الملف هي نفسها المحارف المعطاة في السلسلة النصية. اطلع على توثيق التابع Buffer.byteLength()‎. إنه من غير الآمن استدعاء التابع fs.write()‎ عدة مرات مع نفس الملف دون انتظار رد النداء. في مثل هذه الحالة، يُنصَح باستعمال التابع fs.createWriteStream()‎. في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط position‎ وستضيف البيانات إلى نهاية الملف دومًا.

fs.writeFile(file, data[, options], callback)‎

سجل التغييرات
الإصدار التغييرات
v10.10.0 يمكن أن يكون المعامل data الآن كائنًا من النوع TypeError‎ أو النوع DataView.
v10.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError‎ في وقت التشغيل إن لم يُمرَّر.
v7.4.0 يمكن أن يكون المعامل data كائنًا من النوع Uint8Array‎.
v7.0.0 لم يعد المعامل callback‎ اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
v5.0.0 يمكن أن يكون المعامل file‎ واصف ملفٍ الآن.
v0.1.29 أضيف هذا التابع.

يكتب هذا التابع البيانات الموجودة في الوسيط data في الملف file المعطى بشكل غير متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يمكن أن يكون الوسيط data‎ سلسلةً نصيةً أو مخزنًا مؤقتًا في الذاكرة (buffer). سيُتجاهَل الخيار encoding‎ إن كان الوسيط data‎ مخزنًا مؤقتًا.

const data = new Uint8Array(Buffer.from('Hello Node.js'));
fs.writeFile('message.txt', data, (err) => {
  if (err) throw err;
  console.log('The file has been saved!');
});

إن كان الوسيط options‎ سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز:

fs.writeFile('message.txt', 'Hello Node.js', 'utf8', callback);

يجب على واصف الملف المعطى أن يدعم عملية الكتابة على الملف. إنه من غير الآمن استدعاء التابع fs.writeFile()‎ عدة مرات مع نفس الملف دون انتظار رد النداء. في مثل هذه الحالة، يُنصَح باستعمال التابع fs.createWriteStream()‎. إن أعطي واصف ملف للوسيط file‎، فلن يُغلَق الملف تلقائيًّا.

fs.writeFileSync(file, data[, options])‎

سجل التغييرات
الإصدار التغييرات
v10.10.0 يمكن أن يكون المعامل data الآن كائنًا من النوع TypeError‎ أو النوع DataView‎.
v7.4.0 يمكن أن يكون المعامل data كائنًا من النوع Uint8Array‎.
v5.0.0 يمكن أن يكون المعامل file‎ واصف ملفٍ الآن.
v0.1.29 أضيف هذا التابع.

يكتب هذا التابع البيانات الموجودة في الوسيط data في الملف file المعطى بشكل متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يعيد هذا التابع القيمة undefined‎. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار المتزامن من هذا التابع الذي هو fs.writeFile()‎.

fs.writeSync(fd, buffer[, offset[, length[, position]]])‎

سجل التغييرات
الإصدار التغييرات
v10.10.0 يمكن أن يكون المعامل buffer الآن كائنًا من النوع TypeError‎ أو النوع DataView‎.
v7.4.0 يمكن الآن أن يكون المعامل buffer‎ كائنًا من النوع Uint8Array.
v7.2.0 أصبح تمرير المعاملين offset‎ و length‎ اختياريًّا الآن.
v0.1.21 أضيف هذا التابع.
  • fd:‏‏ <integer>
  • buffer:‏ <Buffer>‏ | <TypedArray>‏ | <DataView> يمثِّل جزءًا من ذاكرة التخزين المؤقتة التي ستُقرَأ منها البيانات المراد كتابتها في الملف.
  • offset:‏ <integer> عددٌ صحيحٌ يحدِّد جزء البيانات من ذاكرة التخزين المؤقتة buffer‎ المراد كتابته.
  • length:‏ <integer> عددٌ صحيحٌ يحدِّد عدد البايتات المراد كتابتها في الملف.
  • position:‏ <integer> عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان typeof position !== 'number'‎، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة pwrite(2).
  • القيم المعادة: <number> عدد البايتات التي كُتبَت.

يكتب هذا التابع البيانات المحددة في الذاكرة buffer‎ في الملف ذي الواصف fd‎ المعطى بشكل متزامن. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار المتزامن من هذا التابع الذي هو fs.write(fd, buffer...).

fs.writeSync(fd, string[, position[, encoding]])‎

سجل التغييرات
الإصدار التغييرات
v7.2.0 أصبح تمرير المعامل position اختياريًّا الآن.
v0.11.5 أضيف هذا التابع.
  • fd:‏‏ <integer>
  • string:‏ <string>‏ سلسلة نصية تحوي البيانات المراد كتابتها في الملف.
  • position:‏ <integer> عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان typeof position !== 'number'‎، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة pwrite(2).
  • encoding:‏‏ <string>‏ يمثِّل الترميز المتوقع للسلسلة النصية. القيمة الافتراضية هي: 'utf8'.

القيم المعادة: <number> عدد البايتات التي كُتبَت. يكتب هذا التابع البيانات الموجودة في السلسلة النصية string في الملف ذي الواصف fd‎ المعطى بشكل متزامن. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار المتزامن من هذا التابع الذي هو fs.write(fd, string...).

واجهة الوعود (Promises) البرمجية في الوحدة fs‎

الاستقرار: 1 - قيد التجريب.

توفِّر الواجهة البرمجية fs.promises‎ مجموعةً بديلةً لتوابع نظام الملفات الغير متزامنة تعيد الكائن Promise‎ بدلًا من استعمال رد النداء. يمكن الوصول إلى هذه الواجهة البرمجية عبر require('fs').promises‎.

الصنف FileHandle‎

أضيف في الإصدار: v10.0.0.

الكائن FileHandle‎ هو مغلفٌ لواصف ملفٍ عدديٍّ. تختلف النسخ المنشأة من FileHandle‎ عن واصفات الملفات العددية، إذ إن لم يُغلَق الكائن FileHandle‎ مثلًا بشكل صريح عبر استعمال التابع filehandle.close()‎، فسيُغلَق واصف الملف تلقائيًّا وسيُصدَر تحذير بالعملية. هذا يساعد في منع حدوث تسريبٍ في الذاكرة. تُنشَأ نسخٌ من الصنف FileHandle‎ ضمنيًّا عبر التابع fsPromises.open(). لا يُستعمَل واصف ملف عددي عبر الواجهات البرمجية التي تعتمد على الوعود خلافًا للواجهات البرمجية التي تعتمد على ردود النداء (مثل fs.fstat()‎، و fs.fchown()‎، و fs.fchmod()‎، ...إلخ.). عوضًا عن ذلك، الواجهات البرمجية التي تعتمد على الوعود تستعمل الصنف FileHandle‎ لتجنب حدوث تسريب في واصفات الملفات غير المغلقة بشكل غير مقصود بعد أن يُقبَل الكائن Promise‎ أو يُرفَض.

‎filehandle.appendFile(data, options)‎

أضيف في الإصدار: v10.0.0.

يضيف هذا التابع بيانات إلى هذا الملف، أو يُنشئ ملفًا إن لم يكن الملف موجودًا بعد. يمكن أن يكون الوسيط data‎ سلسلة نصية أو مخزنًا مؤقتًا في الذاكرة (buffer). يُقبَل الكائن Promise‎ دون أية وسائط عند نجاح العملية. إن كان الوسيط options‎ سلسلة نصية، فسيُحدِّد حينئذٍ الترميز. يجب أن يكون مقبض الملف FileHandle‎ مفتوحًا في وضع الإضافة (appending mode).

filehandle.chmod(mode)‎

أضيف في الإصدار: v10.0.0.

يعدِّل هذا التابع أذونات الملف. يُقبَل الكائن Promise‎ دون أية وسائط عند نجاح العملية.

filehandle.chown(uid, gid)‎

أضيف في الإصدار: v10.0.0.

يغيِّر هذا التابع المستخدم المالك للملف ثم سيُقبَل الكائن Promise‎ دون أية وسائط عند نجاح العملية.

‎filehandle.close()‎

أضيف في الإصدار: v10.0.0.

  • القيم المعادة:‏‏ <Promise> يعاد كائن من النوع Promise‎ الذي سيُقبَل متى ما أُغلِق واصف الملف الضمني، أو سيُرفَض إن حصل أي خطأ أثناء إغلاق الملف.

يوضح المثال التالي كيفية استعمال هذا التابع لإغلاق ملف:

const fsPromises = require('fs').promises;
async function openAndClose() {
  let filehandle;
  try {
    filehandle = await fsPromises.open('thefile.txt', 'r');
  } finally {
    if (filehandle !== undefined)
      await filehandle.close();
  }
}

filehandle.datasync()‎

أضيف في الإصدار: v10.0.0.

ينفِّذ هذا التابع استدعاء النظام fdatasync(2) بشكل غير متزامن. يُقبَل الكائن Promise‎ دون أية وسائط عند نجاح العملية.

filehandle.fd‎

أضيفت في الإصدار: v10.0.0.

  • ‏‏ <Promise> عدد يمثل واصف الملف المُدار من قِبَل الكائن FileHandle‎.

filehandle.read(buffer, offset, length, position)‎

أضيف في الإصدار: v10.0.0.

  • buffer:‏ <Buffer>‏ | <Uint8Array> يمثِّل ذاكرة التخزين المؤقتة التي ستُكتَب فيها البيانات المقروءة من الملف.
  • offset:‏ <integer> عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في ذاكرة التخزين المؤقتة buffer‎ (أي مقدار الإزاحة من بدياتها).
  • length:‏ <integer> عددٌ صحيحٌ يحدِّد عدد البايتات المراد قراءتها من الملف.
  • position:‏ <integer> عددٌ صحيحٌ يحدِّد موضع بداية قراءة البيانات من الملف. إن كانت قيمة هذا الوسيط null‎، فستُقرَأ البيانات بدءًا من موضع المؤشر الحالي في الملف ثم سيُحدَّث موضع مؤشِّر الملف بعد انتهاء عملية القراءة. إن كانت قيمة هذا الوسيط عددًا صحيحًا، فسيبقى موضع مؤشِّر الملف دون تغيير.
  • القيم المعادة: <Promise>

يقرأ هذا التابع البيانات من الملف. عَقِب نجاح عملية القراءة، يُقبَل الكائن Promise‎ مع كائن يحوي الخاصية bytesRead‎ التي تحدد عدد البايتات التي قُرأَت، والخاصية buffer‎ التي تشير إلى محتوى الوسيط buffer‎ الذي يحوي البيانات التي قُرأَت من الملف.

filehandle.readFile(options)‎

أضيف في الإصدار: v10.0.0.

يقرأ هذا التابع كامل محتوى ملفٍ بشكل غير متزامن. يُقبَل الكائن Promise‎ مع محتوى الملف. إن لم يُحدَّد أي ترميز (باستعمال الخيار options.encoding‎)، فستُعاد البيانات ضمن كائن من النوع buffer‎. أمَّا إن أعطي الترميز، فستُعاد البيانات ضمن سلسلة نصية. إن كان الوسيط options‎ سلسلة نصية، فسيُحدِّد حينئذٍ الترميز. عندما يكون المسار path‎ مجلدًا، سيختلف سلوك التابع fsPromises.readFile()‎ اعتمادًا على المنصة المستعملة؛ في أنظمة التشغيل macOS، ولينكس، وويندوز، سيؤدي ذلك إلى رفض الكائن Promise‎ مع خطأ. أمَّا في FreeBSD، فسيعاد تمثيلٌ بمحتوى المجلد. يجب على مقبض الملف FileHandle‎ المحدَّد أن يدعم عملية القراءة.

filehandle.stat([options])‎

سجل التغييرات
الإصدار التغييرات
v10.5.0 يقبل التابع كائن options‎ إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v10.0.0 أضيف هذا التابع.
  • options:‏ <Object>
    • bigint:‏ <boolean> يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن fs.Stats‎ المعاد من النوع bigint. القيمة الافتراضية هي: false‎.
  • القيم المعادة:‏ <Promise>

يجلب هذا التابع معلومات حول الملف (أي يعيد الكائن fs.Stats‎ للملف).

filehandle.sync()‎

أضيف في الإصدار: v10.0.0.

ينفِّذ هذا التابع دالة النظام fsync(2)‎ بشكل غير متزامن. يُقبَل الكائن Promise‎ دون أية وسائط عند نجاح العملية.

filehandle.truncate(len)‎

أضيف في الإصدار: v10.0.0.

  • len:‏ <integer> القيمة الافتراضية هي: 0‎.
  • القيم المعادة:‏ <Promise>

يقطع هذا التابع الملف إلى الحجم len‎ ثم يُقبَل الكائن Promise‎ دون أية وسائط عند نجاح العملية. إن كان حجم الملف أكبر من الحجم len‎ المعطى بالبايت، فستُعاد البايتات len‎ الأولى فقط من الملف. على سبيل المثال، يعيد البرنامج التالي البايتات الأربعة الأولى فقط من الملف:

const fs = require('fs');
const fsPromises = fs.promises;

console.log(fs.readFileSync('temp.txt', 'utf8'));
// Node.js سيُطبَع

async function doTruncate() {
  let filehandle = null;
  try {
    filehandle = await fsPromises.open('temp.txt', 'r+');
    await filehandle.truncate(4);
  } finally {
    if (filehandle) {
      // إغلاق الملف إن كان مفتوحًا.
      await filehandle.close();
    }
  }
  console.log(fs.readFileSync('temp.txt', 'utf8'));  // Node :سيُطبَع
}

doTruncate().catch(console.error);

إن كان حجم الملف أقل من الحجم len‎ المراد اقتطاعه، فسيُمدَّد حجم الملف إلى الحجم len‎ بالبايت وستُملَأ البايتات المضافة ببايتات عدمية (أي بالقيمة '\0'‎):

const fs = require('fs');
const fsPromises = fs.promises;

console.log(fs.readFileSync('temp.txt', 'utf8'));
// Node.js :سيُطبَع

async function doTruncate() {
  let filehandle = null;
  try {
    filehandle = await fsPromises.open('temp.txt', 'r+');
    await filehandle.truncate(10);
  } finally {
    if (filehandle) {
      // إغلاق الملف إن كان مفتوحًا
      await filehandle.close();
    }
  }
  console.log(fs.readFileSync('temp.txt', 'utf8'));  // Node.js\0\0\0 :سيُطبَع
}

doTruncate().catch(console.error);

البايتات الأخيرة المضافة هي بايتات عدمية ('\0'‎) تستعمل لتعويض البايتات الإضافية الناتجة عن عملية الإفراط في الاقتطاع (over-truncation).

filehandle.utimes(atime, mtime)‎

أضيف في الإصدار: v10.0.0.

يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمقبض FileHandle‎ ثم يقبل الكائن Promise‎ دون أية وسائط عند نجاح العملية. لا يعمل هذا التابع على إصدارات AIX التي قبل 7.1، إذ سيقبل الكائن Promise‎ مع خطأ رمزه UV_ENOSYS‎.

filehandle.write(buffer, offset, length, position)‎

أضيف في الإصدار: v10.0.0.

  • buffer:‏ <Buffer>‏ | <TypedArray>‏ | <DataView> يمثِّل جزءًا من ذاكرة التخزين المؤقتة التي ستُقرَأ منها البيانات المراد كتابتها في الملف.
  • offset:‏ <integer> عددٌ صحيحٌ يحدِّد جزء البيانات من ذاكرة التخزين المؤقتة buffer‎ المراد كتابته.
  • length:‏ <integer> عددٌ صحيحٌ يحدِّد عدد البايتات المراد كتابتها في الملف.
  • position:‏ <integer> عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في الملف بدءًا من بداية الملف (أي يحدِّد مقدار الإنزياح من بداية الملف). إن كان typeof position !== 'number'‎، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة pwrite(2).
  • القيم المعادة:‏ <Promise>

يكتب هذا التابع البيانات المحددة في الذاكرة buffer‎ في الملف. عَقِب نجاح عملية الكتابة، يُقبَل الكائن Promise‎ مع كائن يحوي الخاصية bytesWritten التي تحدد عدد البايتات التي كُتبَت، والخاصية buffer‎ التي تشير إلى محتوى الوسيط buffer‎ الذي يحوي البيانات التي كُتبَت في الملف. إنه من غير الآمن استدعاء التابع filehandle.write()‎ عدة مرات مع نفس الملف دون انتظار قبول الكائن Promise‎ (أو رفضه). في مثل هذه الحالة، يُنصَح باستعمال التابع fs.createWriteStream()‎. في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط position‎ وستضيف البيانات إلى نهاية الملف دومًا.

filehandle.writeFile(data, options)‎

أضيف في الإصدار: v10.0.0.

يكتب هذا التابع البيانات الموجودة في الوسيط data في الملف بشكل غير متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يمكن أن يكون الوسيط data‎ سلسلةً نصيةً أو مخزنًا مؤقتًا في الذاكرة (buffer). يُقبَل الكائن Promise‎ دون أية وسائط عند نجاح العملية. سيُتجاهَل الخيار encoding‎ إن كان الوسيط data‎ مخزنًا مؤقتًا (buffer). إن كان الوسيط options‎ سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز. يجب على مقبض الملف FileHandle‎ المعطى أن يدعم عملية الكتابة على الملف. إنه من غير الآمن استدعاء التابع filehandle.writeFile()‎ عدة مرات مع نفس الملف دون قبول الكائن Promise‎ (أو رفضه).

fsPromises.access(path[, mode])‎

أضيف في الإصدار: v10.0.0.

يفحص هذا التابع أذونات المستخدم للملف أو المجلد المحدَّد في المسار path‎. الوسيط mode‎ الاختياري هو عددٌ صحيحٌ يحدِّد عمليات التحقق من قابلية الوصول المراد تنفيذها. اطلع على القسم «ثوابت الوصول للملف» لمعرفة القيمة المتاحة للوسيط mode‎. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل fs.constants.W_OK | fs.constants.R_OK‎). إن نجحت عملية التحقق من قابلية الوصول، فسيُقبَل الكائن Promise‎ دون أية قيمة. وإن فشلت عملية التحقق من أيِّ قابليةٍ للوصول، فسيُرفَض الكائن Promise‎ مع الكائن Error‎. يتحقق المثال التالي إن كان الملف ‎/etc/passwd قابلًا للقراءة أو الكتابة من قِبَل العملية الحالية:

const fs = require('fs');
const fsPromises = fs.promises;

fsPromises.access('/etc/passwd', fs.constants.R_OK | fs.constants.W_OK)
  .then(() => console.log('can access'))
  .catch(() => console.error('cannot access'));

لا يُنصَح باستدعاء fsPromises.access()‎ للتحقُّق من قابلة الوصول للملف قبل استدعاء fsPromises.open()‎، إذ يؤدي فعل ذلك إلى خلق «حالة تسابق» (race condition) لأنَّه ربما قد تُغيِّر عمليات أخرى حالة الملف بين الاستدعائين. بدلًا من ذلك، يجب على شيفرة المستخدم أن تفتح وتقرأ وتكتب في الملف مباشرةً وأن تعالج أي خطأ يُطلَق إن لم يكن الملف قابلًا للوصول.

fsPromises.appendFile(path, data[, options])‎

أضيف في الإصدار: v10.0.0.

يضيف هذا التابع بياناتٍ إلى ملف بشكل غير متزامن، أو ينشئ ملفًا ويضع البيانات فيه إن لم يكن هذا الملف موجودًا. يمكن أن تكون البيانات data‎ المراد كتابتها سلسلةً نصيةً أو كائنًا من النوع Buffer‎. يُقبَل الكائن Promise‎ دون أية وسائط عند نجاح العملية. إن كان الوسيط options‎ سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز. يمكن أن يُعطَى المسار path‎ كمقبض FileHandle‎ لملفٍ فُتِح لإضافة البيانات فيه (باستعمال fsPromises.open()‎). لن يُغلَق واصف الملف بشكل تلقائي.

fsPromises.chmod(path, mode)‎

أضيف في الإصدار: v10.0.0.

يغيِّر هذا التابع بشكل غير متزامن أذونات ملفٍ ثم يقبل الكائن Promise‎ دون أية وسائط عند نجاح العملية.

fsPromises.chown(path, uid, gid)‎

أضيف في الإصدار: v10.0.0.

يغيِّر هذا التابع بشكل غير متزامن المالك والمجموعة المالكة لملف ثم يقبل الكائن Promise‎ دون أية وسائط عند نجاح العملية.

fsPromises.copyFile(src, dest[, flags])‎

أضيف في الإصدار: v10.0.0.

  • src:‏ <string>‏ | <Buffer>‏ | <URL> اسم الملف المراد نسخه.
  • dest:‏ <string>‏ | <Buffer>‏ | <URL> اسم الملف الوجهة الذي سيُنسَخ في الملف المحدَّد في المعامل src.
  • flags:‏ <number> مُعدِّلات (modifiers) عملية النسخ. القيمة الافتراضية هي: 0.
  • القيم المعادة:‏ <Promise>

ينسخ هذا التابع ملفًا من src‎ إلى dest‎ بشكل غير متزامن. يُستبدَل ملف الوجهة المحدد بالوسيط dest‎ إن كان موجودًا مسبقًا بشكل افتراضي. يُقبَل الكائن Promise‎ دون أية وسائط عند نجاح العملية. لا تعطِ Node.js أية ضمانات متعلقة بتجزئة عملية النسخ. إن حصل أي خطأ بعد فتح الملف الوجهة للكتابة، ستحاول Node.js إزالته. الوسيط flags‎ اختياري وهو عددٌ صحيحٌ يحدِّد سلوك عملية النسخ. يمكن إنشاء قناع يتألف من ثابتين أو أكثر عبر عملية الدمج الثنائية (bitwise) باستعمال المعامل OR (مثل fs.constants.COPYFILE_FICLONE | fs.constants.COPYFILE_EXCL). الثوابت المدعومة هي:

  • fs.constants.COPYFILE_EXCL‎: ستفشل عملية النسخ إن كان الملف dest‎ موجودًا من قبل.

fs.constants.COPYFILE_FICLONE‎: ستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستُستخدَم آلية النسخ التراجعي (fallback copy).

  • fs.constants.COPYFILE_FICLONE‎: ستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستفشل عملية النسخ.
const fsPromises = require('fs').promises;

// أو سيُستبدَل بشكل افتراضي destination.txt سيُنشَأ الملف
fsPromises.copyFile('source.txt', 'destination.txt')
  .then(() => console.log('source.txt was copied to destination.txt'))
  .catch(() => console.log('The file could not be copied'));

إن كان الوسيط الأخير عددًا، فهو يحدِّد الوسيط flags‎:

const fs = require('fs');
const fsPromises = fs.promises;
const { COPYFILE_EXCL } = fs.constants;

// موجودًا من قبل destination.txt ستفشل العملية إن كان الملف ،COPYFILE_EXCL باستخدام الثابت
fsPromises.copyFile('source.txt', 'destination.txt', COPYFILE_EXCL)
  .then(() => console.log('source.txt was copied to destination.txt'))
  .catch(() => console.log('The file could not be copied'));

fsPromises.lchmod(path, mode)‎

أضيف في الإصدار: v10.0.0.

يغيِّر هذا التابع أذونات وصلةٍ رمزيةٍ بشكل غير متزامن ثم يقبل الكائن Promise‎ دون أية وسائط عند نجاح العملية. هذا التابع متاحٌ في أنظمة macOS فقط.

fsPromises.lchown(path, uid, gid)‎

سجل التغييرات

الإصدار التغييرات v10.6.0 لم تعد هذه الواجهة البرمجية مهملةً بعد الآن. v10.0.0 أضيف هذا التابع.

يغيِّر هذا التابع بشكل غير متزامن المالك والمجموعة المالكة لوصلةٍ رمزيةٍ ثم يقبل الكائن Promise‎ دون أية وسائط عند نجاح العملية.

fsPromises.link(existingPath, newPath)‎

أضيف في الإصدار: v10.0.0.

ينشئ هذا التابع وصلةً جديدةً (وصلةً صلبةً) للملف الحالي عبر استدعاء link(2) بشكل غير متزامن. يُقبَل الكائن Promise‎ دون أية وسائط عند نجاح العملية.

fsPromises.lstat(path[, options])‎

سجل التغييرات
الإصدار التغييرات
v10.5.0 يقبل التابع كائن options‎ إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v10.0.0 أضيف هذا التابع.
  • path:‏‏ <string>‏ | <Buffer>‏ | <URL>
  • options:‏ <Object>
    • bigint:‏ <boolean> يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن fs.Stats‎ المعاد من النوع bigint. القيمة الافتراضية هي: false‎.
  • القيم المعادة:‏ <Promise>

يجلب هذا التابع معلومات حول الوصلة الرمزية ذات المسار path‎ عبر استدعاء دالة النظام lstat(2)‎ بشكل غير متزامن. يُقبَل الكائن Promise‎ مع الكائن fs.Stats‎ للوصلة الرمزية المعطاة عند نجاح العملية.

fsPromises.mkdir(path[, mode])‎

أضيف في الإصدار: v10.0.0.

ينشئ هذا التابع مجلدًا جديدًا بشكل غير متزامن ثم يقبل الكائن Promise‎ دون أية وسائط عند نجاح العملية.

fsPromises.mkdtemp(prefix[, options])‎

أضيف في الإصدار: v10.0.0.

ينشئ هذا التابع مجلدًا فريدًا مؤقتًا بشكل غير متزامن ثم يقبل الكائن Promise‎ دون أية وسائط عند نجاح العملية. يولِّد هذا التابع ستة محارف عشوائية لتضاف إلى نهاية البادئة prefix‎ المعطاة لإنشاء مجلدٍ فريدٍ مؤقتٍ. يمكن أن يكون الوسيط options‎ سلسلةً نصيةً تحدِّد الترميز، أو كائنًا مع الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله.

fsPromises.mkdtemp(path.join(os.tmpdir(), 'foo-'))
  .catch(console.error);

سيضيف التابع fsPromises.mkdtemp()‎ المحارف الستة العشوائية المختارة مباشرةً إلى السلسلة prefix‎ النصية. على سبيل المثال، إن كان لدينا المجلد ‎/tmp‎ وأردنا إنشاء مجلد مؤقت داخله، فيجب أن تنتهي البادئة prefix‎ بالفاصلة الزائدة المستخدمة عادةً في فصل المسار في المنصة المستعملة آنذاك (require('path').sep‎).

fsPromises.open(path, flags[, mode])‎

أضيف في الإصدار: v10.0.0.

يفتح هذا التابع ملفًا بشكل غير متزامن ثم يعيد الكائن Promise‎ مع المقبض FileHandle‎ لذاك الملف عند نجاح العملية. اطلع على توثيق الدالة open(2)‎ لتفاصيل أوسع. يضبط الوسيط mode‎ نمط الملف (الأذونات والبتات اللاصقة [sticky bits]) في حال لم يكن الملف موجودًا وأنشئ آنذاك. تأخذ دالة رد النداء وسيطين هما: err‎ و fd‎. تعدُّ بعض المحارف (مثل < > : " / \ | ? *‎) محجوزةً في ويندوز كما أشير إلى ذلك التوثيق «تسمية الملفات، والمسارات، ومجالات الأسماء». في نظام الملفات NTFS، إن احتوى اسم الملف نقطتين رأسيتين، فستفتح Node.js مجرًى في نظام الملفات كما موضح في هذه الصفحة.

fsPromises.readdir(path[, options])‎

سجل التغييرات
الإصدار التغييرات
v10.10.0 أضيف الخيار withFileTypes‎.
v10.0.0 أضيف هذا التابع.

يقرأ هذا التابع محتوى المجلد المعطى بشكل غير متزامن ثم يقبل الكائن Promise‎ مع مصفوفة تحوي أسماء الملفات في المجلد باستثناء المجلد '.'‎ والمجلد '..'‎. يمكن أن يكون الوسيط options‎ الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله لأسماء الملفات الممرَّرة إلى دالة رد النداء. إن ضُبطَت الخاصية encoding‎ إلى القيمة 'buffer'، فستُمرَّر أسماء الملفات المعادة ككائنات من النوع Buffer‎. إن ضُبِط الخيار options.withFileTypes‎ إلى القيمة true‎، فستحوي المصفوفة files‎ الكائنات fs.Dirent‎.

fsPromises.readFile(path[, options])‎

أضيف في الإصدار: v10.0.0.

يقرأ هذا التابع كامل محتوى الملف ذي المسار path‎ بشكل غير متزامن. يُقبَل الكائن Promise‎ مع محتوى الملف. إن لم يُحدَّد أي ترميز (باستعمال options.encoding‎)، فسيكون نوع البيانات المعادة هو كائنٌ من النوع Buffer‎. أمَّا إن حُدِّد الترميز، فستوضع البيانات المعادة في سلسلة نصية. إن كان الوسيط options‎ سلسلة نصية، فسيُحدِّد حينئذٍ الترميز. عندما يكون المسار path‎ مجلدًا، سيختلف سلوك التابع fsPromises.readFile()‎ اعتمادًا على المنصة المستعملة؛ في أنظمة التشغيل macOS، ولينكس، وويندوز، سيؤدي ذلك إلى رفض الكائن Promise‎ مع خطأ. أمَّا في FreeBSD، فسيعاد تمثيلٌ بمحتوى المجلد. يجب على مقبض الملف FileHandle‎ المعطى أن يدعم عملية القراءة.

fsPromises.readlink(path[, options])‎

أضيف في الإصدار: v10.0.0.

يقرأ هذا التابع محتوى الوصلة الرمزية ذات المسار path‎ عبر استدعاء الدالة readlink(2) بشكل غير متزامن. يُقبَل الكائن Promise‎ مع محتوى الوصلة linkString‎ عند نجاح العملية. يمكن أن يكون الوسيط options‎ الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله مع مسار الوصلة المعاد. إن ضُبطَت الخاصية encoding‎ إلى القيمة 'buffer'، فسيُمرَّر مسار الوصلة المعاد ككائن من النوع Buffer‎.

fsPromises.realpath(path[, options])‎

أضيف في الإصدار: v10.0.0.

يحدِّد هذا التابع الموضع الحقيقي للمسار path‎ باستعمال نفس الدلالات التي يستعملها التابع fs.realpath.native()‎ ثم يقبل الكائن Promise‎ المسار المستبين. المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزة بالترميز UTF8 فقط. يمكن أن يكون الوسيط options‎ الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية encoding‎ التي تحدِّد ترميز المحارف المراد استعماله مع المسار. إن ضُبطَت الخاصية encoding‎ إلى القيمة 'buffer'، فسيُمرَّر المسار المعاد ككائن من النوع Buffer‎. في لينكس، عندما تُربَط Node.js مع المكتبة musl libc، يجب أن يوصل (mount) نظام الملفات procfs في ‎/proc‎ لكي يعمل هذا التابع بشكل صحيح. أما المكتبة glibc، فلا تشترط ذلك.

fsPromises.rename(oldPath, newPath)‎

أضيف في الإصدار: v10.0.0.

يغيِّر هذا التابع اسم الملف oldPath‎ إلى newPath‎ المعطى بشكل غير متزامن ثم يقبل الكائن Promise‎ دون أية وسائط عند نجاح العملية.

fsPromises.rmdir(path)‎

أضيف في الإصدار: v10.0.0.

يحذف هذا التابع المجلد ذا المسار path‎ ثم يقبل الكائن Promise‎ دون أية وسائط عند نجاح العملية. يؤدي استعمال التابع fsPromises.rmdir()‎ مع ملف (وليس مجلد) إلى رفض الكائن Promise‎ مع الخطأ ENOENT‎ في ويندوز والخطأ ENOTDIR‎ في أنظمة POSIX.

fsPromises.stat(path[, options])‎

سجل التغييرات
الإصدار التغييرات
v10.5.0 يقبل التابع كائن options‎ إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع bigint.
v10.0.0 أضيف هذا التابع.
  • path:‏ <string>‏ | <Buffer>‏ | <URL>
  • options:‏ <Object>
    • bigint:‏ <boolean> يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن fs.Stats‎ المعاد من النوع bigint. القيمة الافتراضية هي: false‎.
  • القيم المعادة:‏ <Promise>

يجلب هذا التابع معلومات حول الملف ذي المسار path‎ بشكل غير متزامن ثم يقبل الكائن Promise‎ مع الكائن fs.Stats‎ لذاك الملف.

fsPromises.symlink(target, path[, type])‎

أضيف في الإصدار: v10.0.0.

ينشئ هذا التابع وصلة رمزيَّةً للملف المحدد بالمسار target‎ بشكل غير متزامن ثم يقبل الكائن Promise‎ دون أي وسائط عند نجاح العملية. يمكن ضبط الوسيط type‎ إلى القيمة 'dir'، أو 'file'، أو 'junction' وهو متاح في ويندوز فقط (يُتجاهل في المنصات الأخرى). تتطلب نقاط الوصل (junction points) في ويندوز أن يكون المسار الهدف مطلقًا. عند استعمال 'junction'، سيحول الوسيط target‎ تلقائيًّا إلى مسار مطلق.

fsPromises.truncate(path[, len])‎

أضيف في الإصدار: v10.0.0.

يقطع هذا التابع الملف ذا المسار path إلى الحجم len‎ ثم يقبل الكائن Promise‎ دون أي وسائط عند نجاح العملية. يجب أن يكون المسار path‎ سلسلة نصية أو كائنًا من النوع Buffer‎.

fsPromises.unlink(path)‎

أضيف في الإصدار: v10.0.0.

يزيل هذا التابع ملفًا أو وصلةً رمزيةً عبر تنفيذ الدالة unlink(2)‎ بشكل غير متزامن ثم يقبل الكائن Promise‎ دون أي وسائط عند نجاح العملية.

fsPromises.utimes(path, atime, mtime)‎

أضيف في الإصدار: v10.0.0.

يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار path‎ المعطى بشكل غير متزامن ثم يقبل الكائن Promise‎ دون أي وسائط عند نجاح العملية. يخضع الوسيطان atime‎ و mtime‎ إلى القاعدتين التاليتين:

  • يمكن أن تكون القيم إما أعدادًا تمثل الوقت في توقيت يونكس (Unix epoch time)، أو تواريخ، أو سلاسل نصية عددية مثل '123456789.0'‎.
  • إن لم يكن بالإمكان تحويل القيمة إلى عددٍ، أو كانت NaN‎ أو Infinity‎ أو Infinity‎-، فسيُرمَى خطأٌ.

fsPromises.writeFile(file, data[, options])‎

أضيف في الإصدار: v10.0.0.

يكتب هذا التابع البيانات الموجودة في الوسيط data في الملف file المعطى بشكل غير متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يمكن أن يكون الوسيط data‎ سلسلةً نصيةً أو مخزنًا مؤقتًا في الذاكرة (buffer). يُقبَل الكائن Promise‎ دون أي وسائط عند نجاح العملية. سيُتجاهَل الخيار encoding‎ إن كان الوسيط data‎ مخزنًا مؤقتًا. إن كان الوسيط options‎ سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز. يجب على مقبض الملف FileHandle‎ المعطى أن يدعم عملية الكتابة على الملف. إنه من غير الآمن استدعاء التابع fsPromises.writeFile()‎ عدة مرات مع نفس الملف دون انتظار قبول الكائن Promise‎ (أو رفضه).

الثوابت المستعملة في الوحدة fs‎

يمكن تصدير الثوابت الموجودة في هذا القسم عبر استدعاء fs.constants‎. انتبه إلى أنه لن تكون جميع الثوابت متاحةً على جميع أنظمة التشغيل.

ثوابت الوصول للملف

تستخدم الثوابت التالية مع التابع fs.access()‎:

الثابت الوصف
F_OK رايةٌ تشير إلى أن الملف ظاهرٌ للعملية المستدعاة. هذا مفيدٌ لتحديد إن كان الملف موجودًا أم ولا، ولكنه لا يفيد بتحديد أذوناته.

هذا الثابت هو القيمة الافتراضية المستعملة عند عدم تحديد أي ثابت.

R_OK رايةٌ تشير إلى أنَّ الملف قابل للقراءة من قبل العملية المستدعاة.
W_OK رايةٌ تشير إلى أنَّ الملف قابل للكتابة من قبل العملية المستدعاة.
X_OK رايةٌ تشير إلى أنَّ الملف قابل للتنفيذ من قبل العملية المستدعاة. ليس لهذه الراية أي تأثير في ويندوز (ستسلك نفس سلوك الراية fs.constants.F_OK).

ثوابت نسخ الملف

تستخدم الثوابت التالية مع التابع fs.copyFile():

الثابت الوصف
COPYFILE_EXCL ستفشل عملية النسخ مع خطأ إن كان الملف موجودًا من قبل في المسار الوجهة المراد إنشاء نسخة فيه.
COPYFILE_FICLONE إن وُجِد، فستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستُستخدَم آلية النسخ التراجعي (fallback copy).
COPYFILE_FICLONE_FORCE إن وُجِد، فستحاول عملية النسخ إنشاء وصلة مرجعية (reflink) بنمط «النسخ عند الكتابة» (copy-on-write). إن لم تدعم المنصة نمط «النسخ عند الكتابة»، فستفشل عملية النسخ مع خطأ.

ثوابت فتح الملف

تستخدم الثوابت التالية مع التابع fs.open()‎:

الثابت الوصف
O_RDONLY رايةٌ تشير إلى فتح الملف في نمط القراءة فقط.
O_WRONLY راية تشير إلى فتح الملف في نمط الكتابة فقط.
O_RDWR رايةٌ تشير إلى فتح الملف في نمط القراءة والكتابة فقط.
O_CREAT رايةٌ تشير إلى إنشاء الملف إن لم يكن موجودًا من قبل.
O_EXCL رايةٌ تشير إلى أن عملية فتح الملف يجب أن تفشل إن استعملت الراية وكان الملف موجودًا من قبل.
O_NOCTTY رايةٌ تشير إلى أنه إذا كان المسار يعرِّف جهازًا طرفيًّا (terminal device)، فيجب ألا يؤدي فتح المسار إلى جعل تلك الطرفية هي الطرفية المتحكمة بالعملية (إن لم تملك العملية واحدةً مسبقًا).
O_TRUNC رايةٌ تشير إلى أنه إذا كان الملف موجودًا وهو ملف طبيعي وفتح الملف بنجاح للكتابة فيه، فيجب أن يُقلَّص حجمه إلى الصفر.
O_APPEND رايةٌ تشير إلى أن البيانات ستضاف في نهاية الملف دومًا.
O_DIRECTORY رايةٌ تشير إلى أن العملية يجب أن تفشل إن كان المسار المعطى لا يمثِّل مجلدًا.
O_NOATIME رايةٌ تشير إلى أنه لن ينتج عن عملية الوصول إلى نظام الملفات من أجل القراءة تحديثَ معلومات الوقت atime‎ المرتبط بالملف.

هذه الراية متاحةٌ للاستعمال في أنظمة لينكس فقط.

O_NOFOLLOW رايةٌ تشير إلى أنه يجب ان تفشل العملية إن كان المسار يمثِّل وصلةً رمزيةً.
O_SYNC رايةٌ تشير إلى أنه يُفتَح الملف من أجل الدخل والخرج المتزامن (synchronized I/O) مع انتظار عمليات الكتابة للحفاظ على سلامة الملف.
O_DSYNC رايةٌ تشير إلى أنه يُفتَح الملف من أجل الدخل والخرج المتزامن (synchronized I/O) مع انتظار عمليات الكتابة للحفاظ على سلامة البيانات.
O_SYMLINK رايةٌ تشير إلى فتح الوصلة الرمزية نفسها بدلًا من فتح المورد الذي تشير إليه.
O_DIRECT عند استعمال هذه الراية، ستُجرَى محاولةٌ لتقليل تأثيرات التخزين المؤقت (caching) لدخل وخرج الملف (file I/O).
O_NONBLOCK رايةٌ تشير إلى فتح الملف في وضع عدم الحجز (nonblocking mode) إن أمكن ذلك.

ثوابت نوع الملف

تستعمل الثوابت التالية الخاصية mode‎ للكائن fs.Stats‎ لتحديد نوع الملف.

الثابت الوصف
S_IFMT قناع بتِّي (bit make) يُستعمَل لاستخراج رمز نوع الملف.
S_IFREG ثابت نوع الملف من أجل ملف طبيعي (regular file).
S_IFDIR ثابت نوع الملف من أجل مجلد.
S_IFCHR ثابت نوع الملف من أجل ملف جهاز محرفي  التوجه (character-oriented device file).
S_IFBLK ثابت نوع الملف من أجل ملف جهاز كتلي التوجه (block-oriented device file).
S_IFIFO ثابت نوع الملف من أجل الأنبوب FIFO (اختصار للعبارة first-in-first-out أي «من دخل أولًا يخرج أولًا»، كما يدعى أحيانًا «أنبوبًا مسمًى»)
S_IFLNK ثابت نوع ملف من أجل وصلة رمزية.
S_IFSOCK ثابت نوع ملف من أجل مقبس.

ثوابت نمط الملف

تستعمل الثوابت التالية الخاصية mode‎ للكائن fs.Stats‎ لتحديد أذونات الوصول للملف.

الثابت الوصف
S_IRWXU نمط ملف يشير إلى قابلية القراءة والكتابة والتنفيذ من قبل المالك.
S_IRUSR نمط ملف يشير إلى قابلة القراءة من قبل المالك.
S_IWUSR نمط ملف يشير إلى قابلية الكتابة من قبل المالك.
S_IXUSR نمط ملف يشير إلى قابلة التنفيذ من قبل المالك.
S_IRWXG نمط ملف يشير إلى قابلية القراءة والكتابة والتنفيذ من قبل المجموعة المالكة.
S_IRGRP نمط ملف يشير إلى قابلة القراءة من قبل المجموعة المالكة.
S_IWGRP نمط ملف يشير إلى قابلية الكتابة من قبل المجموعة المالكة.
S_IXGRP نمط ملف يشير إلى قابلة التنفيذ من قبل المجموعة المالكة.
S_IRWXO نمط ملف يشير إلى قابلية القراءة والكتابة والتنفيذ من قبل الآخرين.
S_IROTH نمط ملف يشير إلى قابلة القراءة من قبل الآخرين.
S_IWOTH نمط ملف يشير إلى قابلية الكتابة من قبل الآخرين.
S_IXOTH نمط ملف يشير إلى قابلة التنفيذ من قبل الآخرين.

رايات نظام الملفات

الرايات التالية متاحة متى ما قبل الخيار flag‎ أن يأخذ سلسلة نصية:

  • 'a': فتح الملف من أجل الإضافة (appending). سيُنشأ الملف إن لم يكون موجودًا.
  • 'ax': شبيهةٌ بالراية 'a' باستثناء أن العملية ستفشل إن كان الملف موجودًا.
  • 'a+‎': فتح الملف للقراءة والإضافة. سيُنشَا الملف إن لم يكن موجودًا.
  • 'ax+‎': شبيهةٌ بالراية 'a+‎' باستثناء أن العملية ستفشل إن كان الملف موجودًا.
  • '‎as': فتح الملف للإضافة في وضع التزامن (synchronous mode). سيُنشَأ الملف إن لم يكن موجودًا.
  • 'as+‎': فتح الملف للقراءة والإضافة في وضع التزامن. سيُنشَأ الملف إن لم يكن موجودًا.
  • 'r': فتح الملف للقراءة. سيُطلَق استثناء إن لم يكن الملف موجودًا.
  • 'r+‎': فتح الملف للقراءة والكتابة. سيُطلَق استثناء إن لم يكن الملف موجودًا.
  • 'rs+‎': فتح الملف للقراءة والكتابة في وضع التزامن. سيُوجَّه نظام التشغيل لتجاوز التخزين المؤقت في نظام الملفات.

الفائدة الأساسية في استعمال هذه الراية هي في فتح الملفات نظام الملفات NFS الموصول (mount)، إذ تسمح بتخطي ذاكرة التخزين المؤقتة المحلية (local cache) التي يحتمل أن تكون قديمة. إن لهذه الراية تأثير حقيقي كبير جدًا على أداء المدخلات والمخرجات (I/O)/ لذا لا يوصى باستعمال هذه الراية إلا عند الحاجة الماسَّة إليها. إن هذا لن يحول التابع fs.open()‎ أو fsPromises.open()‎ إلى الاستدعاء الكتلي المتزامن (synchronous blocking call). إن كان من المستحسن استعمال عملية متزامنة، فيجب استعمال شيء شبيه بالتابع fs.openSync()‎.

  • 'w': فتح الملف للكتابة. سيُنشَأ الملف إن لم يكن موجودًا أو سيُقتطَع إن كان موجودًا.
  • 'wx': شبيهةٌ بالراية 'w' باستثناء أن العملية ستفشل إن ان الملف موجودًا.
  • 'w+‎': فتح الملف للقراءة والكتابة. سيُنشَأ الملف إن لم يكن موجودًا أو سيُقتطَع إن كان موجودًا.
  • 'wx+‎': شبيهةٌ بالراية 'w+‎' باستثناء أن العملية ستفشل إن كان الملف موجودًا.

يمكن أن يكون الخيار flag‎ عددًا أيضًا كما هو مذكور في توثيق الدالة open(2)‎. الثوابت ذات الاستعمال الشائع متاحةٌ عبر استدعاء fs.constants‎. في ويندوز، تحول الرايات إلى ما يقابلها أينما أمكن ذلك مثل تحويل O_WRONLY‎ إلى FILE_GENERIC_WRITE‎ أو تحويل O_EXCL|O_CREAT‎ إلى CREATE_NEW‎ لتُقبَل عبر CreateFileW‎. تتأكد الراية 'x' (هي الراية O_EXCL‎ في open(2)) أن المسارات قد أُنشئَت حديثًا. في أنظمة POSIX، يعد مسارٌ موجودًا حتى إن كان وصلةً رمزيةً تشير إلى ملف غير موجود. الراية 'x' قد تعمل أو قد لا تعمل مع أنظمة ملفات الشبكة. في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط position‎ وستضيف البيانات إلى نهاية الملف دومًا. تعديل ملف بدلًا من استبداله قد يتطلَّب فتحه في الوضع 'r+‎' بدلًا من الوضع 'w' الافتراضي. يعتمد سلوك بعض الرايات على المنصة المستعملة آنذاك. بناءً على ذلك، سيعيد فتح مجلدٍ في نظام التشغيل maxOS أو لينكس مع الراية 'a+‎' خطأً (انظر المثال الآتي). في المقابل، سيعاد واصف ملف أو مقبص الملف FileHandle‎ في ويندوز و FreeBSD.

// macOS and Linux
fs.open('<directory>', 'a+', (err, fd) => {
  // => [Error: EISDIR: illegal operation on a directory, open <directory>]
});

// Windows and FreeBSD
fs.open('<directory>', 'a+', (err, fd) => {
  // => null, <fd>
});

في ويندوز، ستفشل عملية فتح ملف موجود مخفي باستعمال الراية 'w' (سواءً عبر التابع fs.open()‎ أو التابع fs.writeFile()‎ أو التابع fsPromises.open()‎) مع الخطأ EPERM‎. يمكن فتح ملف موجود ولكنه مخفي من أجل الكتابة مع الراية 'r+‎'. يمكن استعمال التابع fs.ftruncate()‎ أو التابع filehandle.truncate() لمسح جميع محتويات الملف.

مصادر