الفرق بين المراجعتين لصفحة: «Node.js/fs»
جميل-بيلوني (نقاش | مساهمات) لا ملخص تعديل |
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
||
(3 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 4: | سطر 4: | ||
توفِّر الوحدة <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) => { | ||
سطر 16: | سطر 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>[[JavaScript/try...catch|try...catch]]</code>، أو ربما يُسمَح لها بالانتشار للأعلى (bubble up). | |||
<syntaxhighlight lang="javascript">const fs = require('fs'); | |||
try { | try { | ||
سطر 26: | سطر 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>[[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) => { | |||
if (err) throw err; | if (err) throw err; | ||
console.log('renamed complete'); | console.log('renamed complete'); | ||
سطر 36: | سطر 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>[[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) => { | |||
if (err) throw err; | if (err) throw err; | ||
fs.stat('/tmp/world', (err, stats) => { | fs.stat('/tmp/world', (err, stats) => { | ||
سطر 45: | سطر 36: | ||
}); | }); | ||
}); | }); | ||
</syntaxhighlight> | </syntaxhighlight>في العمليات المشغولة، يُوصَى المبرمج بشدة باستخدام الاصدارات غير المتزامنة من هذه الاستدعاءات، إذ ستحجب الإصدارات المتزامنة كامل العملية حتى تكمل أو توقف جميع اتصالاتها. | ||
في العمليات المشغولة، يُوصَى المبرمج بشدة باستخدام الاصدارات غير المتزامنة من هذه الاستدعاءات، إذ ستحجب الإصدارات المتزامنة كامل العملية حتى تكمل أو توقف جميع اتصالاتها. | |||
لمَّا كانت أغلب دوال الوحدة <code>fs</code> تسمح بحذف وسيط رد النداء، فإنَّ هذا السلوك غير مُستحسَن مطلقًا، إذ تُستخدَم دالة رد النداء الافتراضية، في أبسط الحالات، في معالجة الأخطاء المرمية وهنا تكمن فائدتها. للحصول على متعقِّب لموقع الاستدعاء الأصلي، اضبط متغير البيئة <code>NODE_DEBUG</code>. | لمَّا كانت أغلب دوال الوحدة <code>fs</code> تسمح بحذف وسيط رد النداء، فإنَّ هذا السلوك غير مُستحسَن مطلقًا، إذ تُستخدَم دالة رد النداء الافتراضية، في أبسط الحالات، في معالجة الأخطاء المرمية وهنا تكمن فائدتها. للحصول على متعقِّب لموقع الاستدعاء الأصلي، اضبط متغير البيئة <code>NODE_DEBUG</code>. | ||
أُهملَت عملية حذف دالة رد النداء في دوال الوحدة <code>fs</code> الغير متزامنة، وقد يؤدي فعل ذلك إلى رمي خطأ في المستقبل. | أُهملَت عملية حذف دالة رد النداء في دوال الوحدة <code>fs</code> الغير متزامنة، وقد يؤدي فعل ذلك إلى رمي خطأ في المستقبل.<syntaxhighlight lang="javascript">$ cat script.js | ||
<syntaxhighlight lang="javascript">$ cat script.js | |||
function bad() { | function bad() { | ||
require('fs').readFile('/'); | require('fs').readFile('/'); | ||
سطر 64: | سطر 53: | ||
<stack trace.> | <stack trace.> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== مسارات الملف (File paths) == | ==مسارات الملف (File paths)== | ||
تقبل أغلب عمليات <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>. | تقبل أغلب عمليات <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>[[Node.js/process#process.cwd.28.E2.80.8E.29.E2.80.8E|process.cwd()]]</code>. | تُفسَّر المسارات التي توضع في سلاسل نصية كسلاسل من المحارف بترميز UTF-8 ممثلةً اسم الملف المطلق أو النسبي. ستُستبيَن المسارات النسبية نسبةً إلى مجلد العمل الحالي المحدَّد باستعمال <code>[[Node.js/process#process.cwd.28.E2.80.8E.29.E2.80.8E|process.cwd()]]</code>. | ||
اطلع على المثال التالي الذي يشرح كيفية استعمال مسار مطلق على نظام متوافق مع معيار POSIX: | اطلع على المثال التالي الذي يشرح كيفية استعمال مسار مطلق على نظام متوافق مع معيار POSIX:<syntaxhighlight lang="javascript">const fs = require('fs'); | ||
<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) => { | ||
سطر 78: | سطر 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>[[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) => { | |||
if (err) throw err; | if (err) throw err; | ||
fs.close(fd, (err) => { | fs.close(fd, (err) => { | ||
سطر 86: | سطر 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) => { | ||
تحديد المسارات باستعمال الكائنات [[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) => { | |||
if (err) throw err; | if (err) throw err; | ||
fs.close(fd, (err) => { | fs.close(fd, (err) => { | ||
سطر 95: | سطر 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>[[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 هذه] الصفحة. | ===دعم الكائن <code>URL</code>=== | ||
=== دعم الكائن <code>URL</code> === | |||
أضيف في الإصدار: v7.6.0. | أضيف في الإصدار: v7.6.0. | ||
في أغلب دوال الوحدة <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> مدعومةً فقط. | في أغلب دوال الوحدة <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'); | ||
<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>[[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> -التي تمثل عناوين URL متوافقة مع المعيار WHATWG- سلوكيات محددة بحسب المنصة المستعملة. | ||
في ويندوز، تحوَّل العناوين URL ذات البرتوكول <code>file:</code> مع اسم المضيف (hosename) إلى مسارات UNC بينما تحول العناوين URL ذات البرتوكول <code>file:</code> التي تحوي على محارف الأقراص إلى مسارات محلية مطلقة. أما العناوين URL ذات البروتوكول <code>file:</code> التي لا تحوي اسم المضيف (hosename) ولا محرف قرص، فسيؤدي استعمالها إلى رمي خطأ. تفحَّص المثال التالي الذي يشرح ما سبق: | في ويندوز، تحوَّل العناوين URL ذات البرتوكول <code>file:</code> مع اسم المضيف (hosename) إلى مسارات UNC بينما تحول العناوين URL ذات البرتوكول <code>file:</code> التي تحوي على محارف الأقراص إلى مسارات محلية مطلقة. أما العناوين URL ذات البروتوكول <code>file:</code> التي لا تحوي اسم المضيف (hosename) ولا محرف قرص، فسيؤدي استعمالها إلى رمي خطأ. تفحَّص المثال التالي الذي يشرح ما سبق:<syntaxhighlight lang="javascript">// :في ويندوز | ||
<syntaxhighlight lang="javascript">// :في ويندوز | |||
// - UNC مع اسم المضيف إلى مسارات file: ذات البرتوكول URL تحوَّل العناوين | // - UNC مع اسم المضيف إلى مسارات file: ذات البرتوكول URL تحوَّل العناوين | ||
سطر 138: | سطر 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')); | ||
سطر 151: | سطر 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')); | ||
سطر 159: | سطر 134: | ||
// الذي يمثل مسار ملف على المحارف \ أو / بعد ترميزها URL يحوي عنوان | // الذي يمثل مسار ملف على المحارف \ أو / بعد ترميزها URL يحوي عنوان | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== واصفات الملف (File Descriptors) == | ==واصفات الملف (File Descriptors)== | ||
في الأنظمة المتوافقة مع POSIX، تحتفظ النواة بجدول للملفات والموارد المفتوحة حاليًا لكل عملية. يُسنَد كل ملف مفتوح إلى إلى معرِّف عددي بسيط يدعى «واصف الملف» (file descriptor). إن تحدثنا على مستوى النظام، نجد أنَّ جميع عمليات نظام الملفات تستعمل واصفات الملفات هذه لتحدِّد وتتتبَّع كل ملف بعينه. يستعمل نظام ويندوز طريقةً مختلفةً ولكنها شبيهة نظريًا بالآلية التي ذكرناها لتعقُّب الموارد. لتبسيط الأشياء للمستخدمين، عمدت Node.js إلى إزالة مثل هذه الاختلافات بين أنظمة التشغيل وإسناد جميع الملفات المفتوحة إلى واصفات ملف عددية. | في الأنظمة المتوافقة مع POSIX، تحتفظ النواة بجدول للملفات والموارد المفتوحة حاليًا لكل عملية. يُسنَد كل ملف مفتوح إلى إلى معرِّف عددي بسيط يدعى «واصف الملف» (file descriptor). إن تحدثنا على مستوى النظام، نجد أنَّ جميع عمليات نظام الملفات تستعمل واصفات الملفات هذه لتحدِّد وتتتبَّع كل ملف بعينه. يستعمل نظام ويندوز طريقةً مختلفةً ولكنها شبيهة نظريًا بالآلية التي ذكرناها لتعقُّب الموارد. لتبسيط الأشياء للمستخدمين، عمدت Node.js إلى إزالة مثل هذه الاختلافات بين أنظمة التشغيل وإسناد جميع الملفات المفتوحة إلى واصفات ملف عددية. | ||
يُستعمَل التابع <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.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) => { | ||
<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) => { | ||
سطر 175: | سطر 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>[[Node.js/cli#UV THREADPOOL SIZE.3Dsize|UV_THREADPOOL_SIZE]]</code> للمزيد من التفاصيل. | ||
== الصنف <code>fs.Dirent</code> == | ==الصنف <code>fs.Dirent</code>== | ||
أضيف في الإصدار: v10.10.0. | أضيف في الإصدار: v10.10.0. | ||
عندما يُستدعَى التابع <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>[[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> === | ===<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. | ||
سطر 221: | سطر 194: | ||
الكائن <code>fs.FSWatcher</code> هو [[Node.js/events#.D8.A7.D9.84.D8.B5.D9.86.D9.81: EventEmitter|مطلقٌُ للأحداث]] (EventEmitter)، إذ يُطلِق الحدث <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> === | ===الحدث <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>[[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.watch.28filename.5B.2C options.5D.5B.2C listener.5D.29.E2.80.8E|fs.watch()]]</code> في الأسفل. | ||
قد لا يكون الوسيط <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. | قد لا يكون الوسيط <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() إضافة معالج حدث عبر مستمع | ||
<syntaxhighlight lang="javascript">// fs.watch() إضافة معالج حدث عبر مستمع | |||
fs.watch('./tmp', { encoding: 'buffer' }, (eventType, filename) => { | fs.watch('./tmp', { encoding: 'buffer' }, (eventType, filename) => { | ||
if (filename) { | if (filename) { | ||
سطر 236: | سطر 208: | ||
}); | }); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== الحدث <code>'error'</code> === | ===الحدث <code>'error'</code>=== | ||
أضيف في الإصدار: v10.10.0. | أضيف في الإصدار: v10.10.0. | ||
يُطلَق هذا الحدث متى ما توقف المراقب (watcher) عن مراقبة التغييرات. لن يكون الكائن <code>[[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.FSWatcher.E2.80.8E|fs.FSWatcher]]</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> === | ===الحدث <code>'close'</code>=== | ||
أضيف في الإصدار: v0.5.8. | أضيف في الإصدار: v0.5.8. | ||
* <code>error</code>: [[JavaScript/Error|<Error>]] | *<code>error</code>: [[JavaScript/Error|<Error>]] | ||
يُطلَق هذا الحدث عندما يحدث خطأٌ أثناء عملية مراقبة الملف. لن يكون الكائن <code>[[Node.js/fs#.D8.A7.D9.84.D8.B5.D9.86.D9.81 fs.FSWatcher.E2.80.8E|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>]] المُمرَّر إليه قابلًا للاستعمال بعد ذلك الحين. | ||
يوقف هذا التابع عملية مراقبة التغييرات في الكائن [[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.ReadStream</code>== | ||
== الصنف <code>fs.ReadStream</code> == | |||
أضيف في الإصدار: v0.1.9.3. | أضيف في الإصدار: v0.1.9.3. | ||
سيعيد الاستدعاء الناجح للتابع <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>[[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> === | ===الحدث <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>[[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>[[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" | {| class="wikitable mw-collapsible" | ||
|+سجل التغييرات | |+سجل التغييرات | ||
سطر 281: | سطر 251: | ||
|v0.1.21 | |v0.1.21 | ||
|أضيف هذا الصنف. | |أضيف هذا الصنف. | ||
|} | |}يوفِّر الكائن <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 { | ||
يوفِّر الكائن <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, | ||
سطر 302: | سطر 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, | ||
سطر 324: | سطر 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>[[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>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> إن كان الكائن [[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>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> إن كان الكائن [[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>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> إن كان الكائن [[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>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> إن كان الكائن [[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>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> إن كان الكائن [[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>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> إن كان الكائن [[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>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>]] | [https://github.com/tc39/proposal-bigint <bigint>] | *[[JavaScript/Number|<number>]] | [https://github.com/tc39/proposal-bigint <bigint>] | ||
تمثِّل هذه الخاصية المعرِّف العددي للجهاز الذي يحوي الملف. | تمثِّل هذه الخاصية المعرِّف العددي للجهاز الذي يحوي الملف. | ||
=== <code>stats.ino</code> === | ===<code>stats.ino</code>=== | ||
* [[JavaScript/Number|<number>]] | [https://github.com/tc39/proposal-bigint <bigint>] | *[[JavaScript/Number|<number>]] | [https://github.com/tc39/proposal-bigint <bigint>] | ||
تمثِّل هذه الخاصية رقم مؤشِّر الفهرسة (inode) لنظام الملفات المحدَّد. | تمثِّل هذه الخاصية رقم مؤشِّر الفهرسة (inode) لنظام الملفات المحدَّد. | ||
=== <code>stats.mode</code> === | ===<code>stats.mode</code>=== | ||
* [[JavaScript/Number|<number>]] | [https://github.com/tc39/proposal-bigint <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>]] | [https://github.com/tc39/proposal-bigint <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>]] | [https://github.com/tc39/proposal-bigint <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>]] | [https://github.com/tc39/proposal-bigint <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>]] | [https://github.com/tc39/proposal-bigint <bigint>] | *[[JavaScript/Number|<number>]] | [https://github.com/tc39/proposal-bigint <bigint>] | ||
تمثِّل هذه الخاصية معرِّف الجهاز العددي إن عُدَّ الملف «خاصًّا» (special). | تمثِّل هذه الخاصية معرِّف الجهاز العددي إن عُدَّ الملف «خاصًّا» (special). | ||
=== <code>stats.size</code> === | ===<code>stats.size</code>=== | ||
* [[JavaScript/Number|<number>]] | [https://github.com/tc39/proposal-bigint <bigint>] | *[[JavaScript/Number|<number>]] | [https://github.com/tc39/proposal-bigint <bigint>] | ||
تمثِّل هذه الخاصية حجم الملف بالبايت. | تمثِّل هذه الخاصية حجم الملف بالبايت. | ||
=== <code>stats.blksize</code> === | ===<code>stats.blksize</code>=== | ||
* [[JavaScript/Number|<number>]] | [https://github.com/tc39/proposal-bigint <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>]] | [https://github.com/tc39/proposal-bigint <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>]] | [https://github.com/tc39/proposal-bigint <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>]] | [https://github.com/tc39/proposal-bigint <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>]] | [https://github.com/tc39/proposal-bigint <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>]] | [https://github.com/tc39/proposal-bigint <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>[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> (وقت التغيير): يمثِّل هذا الوقت آخرة مرةٍ تغيَّرَت فيها حالة الملف (تعديل بيانات مؤشِّر الفهرسة [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</code> جاهزًا للاستعمال؛ أي يُطلَق بعد الحدث <code>'open'</code> مباشرةً. | ||
=== <code>writeStream.bytesWritten</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>[[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>[[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> == | ==<code>fs.access(path[, mode], callback)</code>== | ||
{| class="wikitable mw-collapsible" | {| class="wikitable mw-collapsible" | ||
|+سجل التغييرات | |+سجل التغييرات | ||
سطر 462: | سطر 428: | ||
|أضيف هذا التابع. | |أضيف هذا التابع. | ||
|} | |} | ||
* <code>path</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8. | *<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>. | ||
* <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>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>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> وإن كان قابلًا للقراءة أو الكتابة: | الوسيط الأخير، <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'; | ||
<syntaxhighlight lang="javascript">const file = 'package.json'; | |||
// التحقق من وجود الملف في المجلد الحالي | // التحقق من وجود الملف في المجلد الحالي | ||
سطر 495: | سطر 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> للتحقُّق من قابلة الوصول للملف قبل استدعاء [[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) لأنَّه ربما قد تُغيِّر عمليات أخرى حالة الملف بين الاستدعائين. بدلًا من ذلك، يجب على شيفرة المستخدم أن تفتح وتقرأ وتكتب في الملف مباشرةً وأن تعالج أي خطأ يُطلَق إن لم يكن الملف قابلًا للوصول. | |||
يوضح المثال التالي كيفية الكتابة على ملف بطريقةٍ '''لا يوصى بها''': | يوضح المثال التالي كيفية الكتابة على ملف بطريقةٍ '''لا يوصى بها''':<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'); | ||
سطر 511: | سطر 474: | ||
}); | }); | ||
</syntaxhighlight> | </syntaxhighlight>أمَّا المثال التالي، فيُوضِّح كيفية القراءة من ملف بالطريقة '''المُثلَى''':<syntaxhighlight lang="javascript"> | ||
أمَّا المثال التالي، فيُوضِّح كيفية القراءة من ملف بالطريقة '''المُثلَى''':<syntaxhighlight lang="javascript"> | |||
fs.open('myfile', 'wx', (err, fd) => { | fs.open('myfile', 'wx', (err, fd) => { | ||
if (err) { | if (err) { | ||
سطر 558: | سطر 520: | ||
</syntaxhighlight>تتحقَّق الأمثلة التي «لا يوصى باتباعها» من قابلة الوصول ثمَّ تستعمل الملف؛ أمَّا الأمثلة التي «يوصى باتباعها»، فهي أفضل لأنَّها تستعمل الملف مباشرةً وتعالج الخطأ إن حصل. | </syntaxhighlight>تتحقَّق الأمثلة التي «لا يوصى باتباعها» من قابلة الوصول ثمَّ تستعمل الملف؛ أمَّا الأمثلة التي «يوصى باتباعها»، فهي أفضل لأنَّها تستعمل الملف مباشرةً وتعالج الخطأ إن حصل. | ||
عمومًا، يُتحقَّق من قابلة الوصول للملف في حال استعمال الملف بشكل غير مباشر مثل عندما تكون قابلية وصول ملف إشارةً من عملية أخرى. | عمومًا، يُتحقَّق من قابلة الوصول للملف في حال استعمال الملف بشكل غير مباشر مثل عندما تكون قابلية وصول ملف إشارةً من عملية أخرى. | ||
== <code>fs.accessSync(path[, mode])</code> == | ==<code>fs.accessSync(path[, mode])</code>== | ||
{| class="wikitable mw-collapsible" | {| class="wikitable mw-collapsible" | ||
|+سجل التغييرات | |+سجل التغييرات | ||
سطر 571: | سطر 534: | ||
|أضيف هذا التابع. | |أضيف هذا التابع. | ||
|} | |} | ||
* <code>path</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8. | *<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>. | ||
يفحص هذا التابع بشكل متزامن أذونات المستخدم للملف أو المجلد المحدَّد في المسار <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>[[Node.js/errors#.D8.A7.D9.84.D8.B5.D9.86.D9.81 Error.E2.80.8E|Error]]</code>. خلا ذلك، سيعيد التابع القيمة <code>[[JavaScript/undefined|undefined]]</code>. | إن فشلت إحدى عمليات قابلية الوصول، فيُسرمَى الخطأ <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 { | ||
<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'); | ||
سطر 583: | سطر 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> | |لم يعد المعامل <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. | |يمكن للمعامل <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>mode</code>: [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666</code>. | |} | ||
** <code>mode</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>]] | [[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) => { | ||
سطر 626: | سطر 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> | |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. | |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>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>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!'); | ||
سطر 652: | سطر 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 { | ||
سطر 668: | سطر 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> في وقت التشغيل إن لم يُمرَّر. | |||
|- | |||
|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>mode</code>: [[JavaScript/Number|<integer>]] | |||
*<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 المنطقي للثوابت التالية: | |||
{| class="wikitable" | |||
!الثابت | |||
!القيمة الثمانية | |||
!الإذن | |||
|- | |||
|<code>fs.constants.S_IRUSR</code> | |||
|<code>0o400</code> | |||
|يمكن للمالك قراءة الملف. | |||
|- | |||
|<code>fs.constants.S_IWUSR</code> | |||
|<code>0o200</code> | |||
|يمكن للمالك الكتابة على الملف. | |||
|- | |||
|<code>fs.constants.S_IXUSR</code> | |||
|<code>0o100</code> | |||
|يمكن للمالك تنفيذ الملف أو البحث ضمنه. | |||
|- | |||
|<code>fs.constants.S_IRGRP</code> | |||
|<code>0o40</code> | |||
|يمكن للمجموعة المالكة قراءة الملف. | |||
|- | |||
|<code>fs.constants.S_IWGRP</code> | |||
|<code>0o20</code> | |||
|يمكن للمجموعة المالكة الكتابة على الملف. | |||
|- | |||
|<code>fs.constants.S_IXGRP</code> | |||
|<code>0o10</code> | |||
|يمكن للمجموعة المالكة تنفيذ الملف أو البحث ضمنه. | |||
|- | |||
|<code>fs.constants.S_IROTH</code> | |||
|<code>0o4</code> | |||
|يمكن للآخرين قراءة الملف. | |||
|- | |||
|<code>fs.constants.S_IWOTH</code> | |||
|<code>0o2</code> | |||
|يمكن للآخرين الكتابة على الملف. | |||
|- | |||
|<code>fs.constants.S_IXOTH</code> | |||
|<code>0o1</code> | |||
|يمكن للآخرين تنفيذ الملف أو البحث ضمنه. | |||
|}أسهل طريقة لضبط الوسيط <code>mode</code> هي استعمال سلسلة من ثلاثة أعداد ثمانية (مثل العدد <code>765</code>). يحدِّد العدد في أقصى اليسار (هو 7 في مثالنا) أذونات مالك الملف، والعدد الذي في المنتصف (هو 6 في مثالنا) أذونات المجموعة المالكة، والعدد في أقصى اليمين (هو 5 في مثالنا) أذونات الأشخاص الآخرين. | |||
{| class="wikitable" | |||
!العدد الثماني | |||
!الأذونات | |||
|- | |||
|<code>7</code> | |||
|القراءة والكتابة والتنفيذ. | |||
|- | |||
|<code>6</code> | |||
|القراءة والكتابة. | |||
|- | |||
|<code>5</code> | |||
|القراءة والتنفيذ. | |||
|- | |||
|<code>4</code> | |||
|القراءة فقط. | |||
|- | |||
|<code>3</code> | |||
|الكتابة والتنفيذ. | |||
|- | |||
|<code>2</code> | |||
|الكتابة فقط. | |||
|- | |||
|<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>[http://man7.org/linux/man-pages/man2/chmod.2.html chmod(2)]</code>. | |||
==<code>fs.chown(path, uid, gid, 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.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>]] | |||
*<code>callback</code>: [[JavaScript/Function|<Function>]] | |||
**<code>err</code>: [[JavaScript/Error|<Error>]] | |||
2 | |||
== <code>fs.chown(path, uid, gid, callback)</code> == | |||
سجل التغييرات | |||
الإصدار | |||
التغييرات | |||
v10.0.0 | |||
لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError</code> في وقت التشغيل إن لم يُمرَّر. | |||
v7.6.0 | |||
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <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. | |||
* <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/chown.2.html chown(2)]</code>. | ||
التغييرات | ==<code>fs.chownSync(path, uid, gid)</code>== | ||
v7.6.0 | {| class="wikitable mw-collapsible" | ||
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <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. | |v7.6.0 | ||
* <code>uid</code>: [[JavaScript/Number|<integer>]] | |يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب. | ||
* <code>gid</code>: [[JavaScript/Number|<integer>]] | |- | ||
|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>[http://man7.org/linux/man-pages/man2/chown.2.html chown(2)]</code>. | ||
التغييرات | ==<code>fs.close(fd, callback)</code>== | ||
v10.0.0 | {| class="wikitable mw-collapsible" | ||
لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError</code> في وقت التشغيل إن لم يُمرَّر. | |+سجل التغييرات | ||
v7.0.0 | !الإصدار | ||
لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر. | !التغييرات | ||
v0.1.30 | |- | ||
أضيف هذا التابع. | |v10.0.0 | ||
|لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError</code> في وقت التشغيل إن لم يُمرَّر. | |||
* <code>fd</code>: [[JavaScript/Number|<integer>]] | |- | ||
* <code>callback</code>: [[JavaScript/Function|<Function>]] | |v7.0.0 | ||
** <code>err</code>: [[JavaScript/Error|<Error>]] | |لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر. | ||
يغلق هذا التابع بشكل غير متزامن ملفًا مفتوحًا، إذ يُنفِّذ دالة النظام <code>close(2)</code>. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. | |- | ||
== <code>fs.closeSync(fd)</code> == | |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. | *<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. | *<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'); | ||
سطر 837: | سطر 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; | ||
سطر 845: | سطر 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 كيلو بت فقط لذلك الوسيط. | |||
يمكن أن يتضمن الوسيط <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>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'); | ||
سطر 887: | سطر 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>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> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز. | ||
v7.6.0 | ==<code>fs.createWriteStream(path[, options])</code>== | ||
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code> | {| class="wikitable mw-collapsible" | ||
v7.0.0 | |+سجل التغييرات | ||
لن يُغيِّر المعامل <code> | !الإصدار | ||
v2.3.0 | !التغييرات | ||
يمكن أن يكون المعامل <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>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>fd</code>، فسيتجاهل <code>WriteStream</code> الوسيط <code>path</code> ويستخدم واصف الملف المعطى. هذا يعني أنه لن يُطلَق الحدث <code>'open'</code>. يجب أن يكون واصف الملف <code>fd</code> المعطى محجوزًا. يجب أن يمرَّر واصف الملف غير المحجوز إلى <code>net.Socket</code>. | |||
* <code>path</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8. | إن كان <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'); | ||
سطر 955: | سطر 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') { | ||
سطر 969: | سطر 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) => { | ||
سطر 981: | سطر 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') { | ||
سطر 995: | سطر 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. | |||
لا يستعمل التابع <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> في وقت التشغيل إن لم يُمرَّر. | |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 إن لم يُمرَّر. | ||
|- | |||
|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')); | |||
إن كان حجم الملف أكبر من الحجم <code>len</code> المعطى بالبايت، فستُعاد البايتات <code>len</code> الأولى فقط من الملف. | |||
على سبيل المثال، يعيد البرنامج التالي البايتات الأربعة الأولى فقط من الملف: | |||
<syntaxhighlight lang="javascript">console.log(fs.readFileSync('temp.txt', 'utf8')); | |||
// Node.js :سيُطبَع | // Node.js :سيُطبَع | ||
سطر 1٬181: | سطر 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> في وقت التشغيل إن لم يُمرَّر. | |v10.0.0 | ||
v7.0.0 | |لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError</code> في وقت التشغيل إن لم يُمرَّر. | ||
لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر. | |- | ||
v4.1.0 | |v7.0.0 | ||
يُسمَح الآن بأن تُستعمَل السلاسل النصية العددية، والقيمة <code> | |لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر. | ||
v0.4.2 | |- | ||
أضيف هذا التابع. | |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>. | |||
لا يعمل هذا التابع على إصدارات 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. | |- | ||
* <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. | *<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>== | ||
{| 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>prefix</code> المطلوبة لإنشاء مجلدٍ فريدٍ مؤقتٍ. | |||
يمرَّر مسار المجلد المُنشَأ كسلسلة نصية إلى المعامل الثاني لدالة رد النداء. | |||
يمكن أن يكون الوسيط <code>options</code> سلسلةً نصيةً تحدِّد الترميز، أو كائنًا مع الخاصية <code>encoding</code> التي تحدِّد ترميز المحارف المراد استعماله.<syntaxhighlight lang="javascript">fs.mkdtemp(path.join(os.tmpdir(), 'foo-'), (err, folder) => { | |||
يمكن أن يكون الوسيط <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٬436: | سطر 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>encoding</code>: [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>'utf8'</code>. | ||
القيم المعادة: [[JavaScript/String|<string>]] | |||
*القيم المعادة: [[JavaScript/String|<string>]] | |||
ينشئ هذا التابع مجلدًا مؤقتًا فريدًا بشكل متزامن. | ينشئ هذا التابع مجلدًا مؤقتًا فريدًا بشكل متزامن. | ||
الإصدار | لمزيد من المعلومات، اطلع على توثيق الإصدار الغير متزامن من هذا التابع الذي هو <code>[[Node.js/fs#fs.mkdtemp.28prefix.5B.2C options.5D.2C callback.29.E2.80.8E|fs.mkdtemp()]]</code>. | ||
* <code>path</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8. | يمكن أن يكون الوسيط <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> | |- | ||
|v9.9.0 | |||
|أصبح الوضعان <nowiki><code>as</code></nowiki> و <nowiki><code>as+</code></nowiki> مدعومين الآن. | |||
|- | |||
|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>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 هذه] الصفحة. | |||
* <code>path</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8. | التوابع التي تعتمد على التابع <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 | !الإصدار | ||
!التغييرات | |||
|- | |||
|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> | |v10.10.0 | ||
|يمكن الآن أن يكون المعامل <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>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>util.promisify()</code>، فسيُعيد كائنًا من النوع <code>Promise</code> لكائن <code>Object</code> مع الخاصيتين <code>bytesRead</code> و <code>buffer</code>. | ||
== <code>fs.readdir(path[, options], callback)</code> == | ==<code>fs.readdir(path[, options], callback)</code>== | ||
سجل التغييرات | {| class="wikitable mw-collapsible" | ||
|+سجل التغييرات | |||
!الإصدار | |||
!التغييرات | |||
|- | |||
|v10.10.0 | |||
|أضيف الخيار <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>. ما زال هذا الدعم قيد التجريب. | |||
|- | |||
|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. | إن ضُبِط الخيار <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' | {| class="wikitable mw-collapsible" | ||
** <code>withFileTypes</code>: [[JavaScript/Boolean|<boolean>]] القيمة الافتراضية هي: <code>false</code>. | |+سجل التغييرات | ||
* | !الإصدار | ||
!التغييرات | |||
|- | |||
يقرأ هذا التابع محتوى المجلد المحدَّد في المسار عبر تنفيذ الدالة <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>. | |||
*القيم المعادة: [[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>. | |||
إن ضُبِط الخيار <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 | |- | ||
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> | |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. | |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>]] اطلع على قسم | |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٬604: | سطر 1٬689: | ||
// => null, [[JavaScript/Date|<Date>]] | // => null, [[JavaScript/Date|<Date>]] | ||
}); | }); | ||
</syntaxhighlight> | </syntaxhighlight>يجب على واصف الملف المحدَّد أن يدعم عملية القراءة. | ||
يجب على واصف الملف المحدَّد أن يدعم عملية القراءة. | |||
إن حُدِّد واصف ملفٍ كمسار <code>path</code>، فلن يُغلَق الملف تلقائيًّا بعد انتهاء العملية. | إن حُدِّد واصف ملفٍ كمسار <code>path</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 | |+سجل التغييرات | ||
v5.0.0 | !الإصدار | ||
يمكن أن يكون المعامل <code> | !التغييرات | ||
|- | |||
|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>[[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 | |||
<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٬636: | سطر 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 | |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 | |v7.6.0 | ||
v7.0.0 | |يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب. | ||
لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر. | |- | ||
v0.1.31 | |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> بشكل غير متزامن. | |||
يمرَّر دالة رد النداء وسيطين هما: <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>[[Node.js/buffer|Buffer]]</code>. | ||
التغييرات | ==<code>fs.readlinkSync(path[, options])</code>== | ||
v7.6.0 | {| class="wikitable mw-collapsible" | ||
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG | |+سجل التغييرات | ||
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. | |v7.6.0 | ||
* <code>options</code>: [[JavaScript/String|<string>]] | [[JavaScript/Object|<Object>]] | |يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب. | ||
** <code>encoding</code>: [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>. | |- | ||
* القيم المعادة: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | |v0.1.31 | ||
يقرأ هذا التابع محتوى الوصلة الرمزية ذات المسار <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>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>[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>. | ||
v10.10.0 | ==<code>fs.readSync(fd, buffer, offset, length, position)</code>== | ||
يمكن الآن أن يكون المعامل <code>buffer</code> كائنًا من النوع <code>TypedArray</code> أو <code>DataView</code>. | {| class="wikitable mw-collapsible" | ||
v6.0.0 | |+سجل التغييرات | ||
يمكن أن يأخذ المعامل <code>length</code> الآن القيمة 0. | !الإصدار | ||
v0.1.21 | !التغييرات | ||
أضيف هذا التابع. | |- | ||
|v10.10.0 | |||
* <code>fd</code>: [[JavaScript/String|<string>]] | |يمكن الآن أن يكون المعامل <code>buffer</code> كائنًا من النوع <code>TypedArray</code> أو <code>DataView</code>. | ||
* <code>buffer</code>: [[Node.js/buffer|<Buffer>]] | [[JavaScript/TypedArray|<TypedArray>]] | [[JavaScript/DataView|<DataView>]] يمثِّل ذاكرة التخزين المؤقتة التي ستُكتَب فيها البيانات المقروءة من الملف. | |- | ||
* <code>offset</code>: [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية كتابة البيانات في ذاكرة التخزين المؤقتة <code>buffer</code> (أي مقدار الإزاحة من بدياتها). | |v6.0.0 | ||
* <code>length</code>: [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد عدد البايتات المراد قراءتها من الملف. | |يمكن أن يأخذ المعامل <code>length</code> الآن القيمة 0. | ||
* <code>position</code>: [[JavaScript/Number|<integer>]] عددٌ صحيحٌ يحدِّد موضع بداية قراءة البيانات من الملف. إن كانت قيمة هذا الوسيط <code>null</code>، فستُقرَأ البيانات بدءًا من موضع المؤشر الحالي في الملف ثم سيُحدَّث موضع مؤشِّر الملف بعد انتهاء عملية القراءة. إن كانت قيمة هذا الوسيط عددًا صحيحًا، فسيبقى موضع مؤشِّر الملف دون تغيير. | |- | ||
* القيم المعادة: [[JavaScript/Number|<number>]] | |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>[[Node.js/fs#fs.read.28fd.2C buffer.2C offset.2C length.2C position.2C callback.29.E2.80.8E|fs.read()]]</code>. | ||
التغييرات | ==<code>fs.realpath(path[, options], callback)</code>== | ||
v10.0.0 | {| class="wikitable mw-collapsible" | ||
لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError</code> في وقت التشغيل إن لم يُمرَّر. | |+سجل التغييرات | ||
v8.0.0 | !الإصدار | ||
أضيف دعمٌ لاستبيان أنبوب أو مقبس. | !التغييرات | ||
v7.6.0 | |- | ||
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG | |v10.0.0 | ||
v7.0.0 | |لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError</code> في وقت التشغيل إن لم يُمرَّر. | ||
لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر. | |- | ||
v6.4.0 | |v8.0.0 | ||
أصبح استدعاء هذا التابع يعمل مجدَّدًا لمختلف الحالات الحدية في ويندوز. | |أضيف دعمٌ لاستبيان أنبوب أو مقبس. | ||
v6.0.0 | |- | ||
|v7.6.0 | |||
v0.1.31 | |يمكن الآن أن يكون الوسيط <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. | |لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر. | ||
* <code>options</code>: [[JavaScript/String|<string>]] | [[JavaScript/Object|<Object>]] | |- | ||
** <code>encoding</code>: [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>. | |v6.4.0 | ||
* <code>callback</code>: [[JavaScript/Function|<Function>]] | |أصبح استدعاء هذا التابع يعمل مجدَّدًا لمختلف الحالات الحدية في ويندوز. | ||
** <code>err</code>: [[JavaScript/Error|<Error>]] | |- | ||
** <code>resolvedPath</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | |v6.0.0 | ||
يحسب هذا التابع اسم المسار الأساسي (canonical pathname) بشكل غير متزامن عبر استبيان <code>.</code>، و <code>..</code>، والوصلات الرمزية. | |حُذِف المعامل <code>cache</code>. | ||
ليس بالضرورة أن يكون اسم المسار المتعارف عليه فريدًا. يمكن للوصلات الصلبة ونظام الملفات الموصول (عبر الأمر mount) أن يكشفا عن نظام ملفات عبر أسماء مسارات متعددة. | |- | ||
يسلك هذا التابع نفس سلوك الدالة <code>realpath(3)</code> باستثناء بعض الأمور منها: | |v0.1.31 | ||
* لا تجرى أية عملية تحويل لحالة الأحرف على أنظمة الملفات الغير حساسة لحالة الأحرف. | |أضيف هذا التابع. | ||
* يعتمد العدد الأقصى للوصلات الرمزية على المنصة المستعملة، ويكون غالبًا أكبر بكثير من العدد الذي يدعمه تنفيذ <code>realpath(3)</code>. | |} | ||
يمرَّر إلى دالة رد النداء وسيطين هما: <code>err</code>، و <code>resolvedPath</code>. قد يُستخدَم <code>process.cwd</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>]] | ||
المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزة بالترميز UTF8 فقط. | *<code>options</code>: [[JavaScript/String|<string>]] | [[JavaScript/Object|<Object>]] | ||
يمكن أن يكون الوسيط <code>options</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding</code> التي تحدِّد ترميز المحارف المراد استعماله مع المسار الممرَّر إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding</code> إلى القيمة <code>'buffer' | **<code>encoding</code>: [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>. | ||
إن استبين المسار إلى مقبسٍ أو أنبوبٍ، فسيعيد هذا التابع اسمًا يعتمد على النظام لذلك الكائن. | *<code>callback</code>: [[JavaScript/Function|<Function>]] | ||
== <code>fs.realpath.native(path[, options], callback)</code> == | **<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. | *<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>. | ||
* <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>resolvedPath</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | **<code>resolvedPath</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | ||
يعيد هذا التابع المسار الأساسي المطلق للمسار <code>path</code> عبر تنفيذ <code>realpath(3)</code> بشكل غير متزامن. | يعيد هذا التابع المسار الأساسي المطلق للمسار <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>err</code>، و <code>resolvedPath</code>. | ==<code>fs.realpathSync(path[, options])</code>== | ||
المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزة بالترميز UTF8 فقط. | {| class="wikitable mw-collapsible" | ||
يمكن أن يكون الوسيط <code>options</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding</code> التي تحدِّد ترميز المحارف المراد استعماله مع المسار الممرَّر إلى دالة رد النداء. إن ضُبطَت الخاصية <code>encoding</code> إلى القيمة <code>'buffer' | |+سجل التغييرات | ||
في لينكس، عندما تُربَط Node.js مع المكتبة musl libc، يجب أن يوصل (mount) نظام الملفات procfs في <code>/proc</code> لكي يعمل هذا التابع بشكل صحيح. أما المكتبة glibc، فلا تشترط ذلك. | !الإصدار | ||
== <code>fs.realpathSync(path[, options])</code> == | !التغييرات | ||
سجل التغييرات | |- | ||
|v8.0.0 | |||
الإصدار | |أضيف دعمٌ لاستبيان أنبوب أو مقبس. | ||
التغييرات | |- | ||
v8.0.0 | |v7.6.0 | ||
أضيف دعمٌ لاستبيان أنبوب أو مقبس. | |يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب. | ||
v7.6.0 | |- | ||
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG | |v6.4.0 | ||
v6.4.0 | |أصبح استدعاء هذا التابع يعمل مجدَّدًا لمختلف الحالات الحدية في ويندوز. | ||
أصبح استدعاء هذا التابع يعمل مجدَّدًا لمختلف الحالات الحدية في ويندوز. | |- | ||
v6.0.0 | |v6.0.0 | ||
|حُذِف المعامل <code>cache</code>. | |||
v0.1.31 | |- | ||
أضيف هذا التابع. | |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. | |} | ||
* <code>options</code>: [[JavaScript/String|<string>]] | [[JavaScript/Object|<Object>]] | *<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>encoding</code>: [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>. | *<code>options</code>: [[JavaScript/String|<string>]] | [[JavaScript/Object|<Object>]] | ||
* القيم المعادة: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | **<code>encoding</code>: [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>. | ||
يعيد هذا التابع اسم المسار المستبين. | *القيم المعادة: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | ||
لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو <code>fs.realpath()</code>. | يعيد هذا التابع اسم المسار المستبين. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو <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> == | ==<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. | *<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>[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، فلا تشترط ذلك. | ||
يعيد هذا التابع المسار الأساسي المطلق للمسار <code>path</code> عبر تنفيذ <code>realpath(3)</code> بشكل متزامن. | ==<code>fs.rename(oldPath, newPath, callback)</code>== | ||
المسارات المدعومة هي المسارات التي يمكن تحويلها إلى سلاسل نصية مرمزةً بالترميز UTF8 فقط. | {| class="wikitable mw-collapsible" | ||
يمكن أن يكون الوسيط <code>options</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding</code> التي تحدِّد ترميز المحارف المراد استعماله مع المسار المعاد. إن ضُبطَت الخاصية <code>encoding</code> إلى القيمة <code>'buffer' | |+سجل التغييرات | ||
في لينكس، عندما تُربَط Node.js مع المكتبة musl libc، يجب أن يوصل (mount) نظام الملفات procfs في <code>/proc</code> لكي يعمل هذا التابع بشكل صحيح. | !الإصدار | ||
== <code>fs.rename(oldPath, newPath, callback)</code> == | !التغييرات | ||
سجل التغييرات | |- | ||
|v10.0.0 | |||
الإصدار | |لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError</code> في وقت التشغيل إن لم يُمرَّر. | ||
التغييرات | |- | ||
v10.0.0 | |v7.6.0 | ||
لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError</code> في وقت التشغيل إن لم يُمرَّر. | |يمكن الآن أن يكون الوسيط <code>oldPath</code> والوسيط <code>newPath</code> كائنات من النوع <code>URL</code> متوافق مع WHATWG باستعمال البروتوكول <code>file:</code>. ما زال هذا الدعم قيد التجريب. | ||
v7.6.0 | |- | ||
يمكن الآن أن يكون الوسيط <code>oldPath</code> والوسيط <code>newPath</code> كائنات من النوع <code>URL</code> متوافق مع WHATWG | |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. | *<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. | *<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>callback</code>: [[JavaScript/Function|<Function>]] | ||
** <code>err</code>: [[JavaScript/Error|<Error>]] | **<code>err</code>: [[JavaScript/Error|<Error>]] | ||
يغيِّر هذا التابع اسم الملف <code>oldPath</code> إلى <code>newPath</code> المعطى بشكل غير متزامن. إن كان الملف <code>newPath</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) => { | ||
انظر أيضًا دالة النظام <code>rename(2)</code>. | |||
<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 | |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. | |أضيف هذا التابع. | ||
* <code>newPath</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8. | |} | ||
يغيِّر هذا التابع اسم الملف <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> | *<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> في وقت التشغيل إن لم يُمرَّر. | |- | ||
|v10.0.0 | |||
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG | |لم يعد المعامل <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. | |لم يعد المعامل <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>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 | |+سجل التغييرات | ||
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. | |v7.6.0 | ||
يحذف هذا التابع المجلد ذا المسار <code>path</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> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع | {| class="wikitable mw-collapsible" | ||
v10.0.0 | |+سجل التغييرات | ||
لم يعد المعامل <code>callback</code> اختياريًّا بعد الآن. سيُرمَى الخطأ <code>TypeError</code> في وقت التشغيل إن لم يُمرَّر. | !الإصدار | ||
v7.6.0 | !التغييرات | ||
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG | |- | ||
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. | |- | ||
* <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> | |- | ||
إن حصل خطأ، سيكون <code>err.code</code> أحد أخطاء النظام الشائعة. | |v0.0.2 | ||
لا ينصح باستعمال التابع <code>fs.stat()</code> للتحقق من وجود الملف قبل استدعاء <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>]] | |||
*<code>stats</code>: <fs.Stats> | |||
يجلب هذا التابع معلومات حول الملف ذي المسار <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>. | |||
==<code>fs.statSync(path[, options])</code>== | |||
{| class="wikitable mw-collapsible" | |||
|+سجل التغييرات | |||
!الإصدار | |||
!التغييرات | |||
|- | |||
* <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> | |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>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. | ==<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. | {| class="wikitable mw-collapsible" | ||
* <code>type</code>: [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>'file' | |+سجل التغييرات | ||
* <code>callback</code>: [[JavaScript/Function|<Function>]] | !الإصدار | ||
** <code>err</code>: [[JavaScript/Error | !التغييرات | ||
|- | |||
يمكن ضبط الوسيط <code>type</code> إلى القيمة <code>'dir' | |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>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. | |} | ||
* <code>path</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8. | *<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>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. | |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. | *<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 | |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. | |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 | |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. | يزيل هذا التابع ملفًا أو وصلةً رمزيةً بشكل غير متزامن. يعيد هذا التابع القيمة <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. | *<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>. يجب أن يُستعمَل التابع | {| 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>- | |- | ||
v7.6.0 | |v7.6.0 | ||
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG | |يمكن الآن أن يكون الوسيط <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. | |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>- | !التغييرات | ||
v7.6.0 | |- | ||
يمكن الآن أن يكون الوسيط <code>path</code> كائنًا من النوع <code>URL</code> متوافق مع WHATWG | |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. | |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> | |أضيف هذا التابع. | ||
== <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 | {| 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. | |يمكن الآن أن يكون الوسيط <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>options</code> المُمرَّر مطلقًا. | ||
|- | |||
|v0.5.10 | |||
** <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>]] | [[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>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>encoding</code>: [[JavaScript/String|<string>]] يحدد ترميز المحارف المراد استعماله من أجل اسم الملف الممرر إلى المستمع. القيمة الافتراضية هي: <code>'utf8'</code>. | ||
يُربَط رد النداء المستمع مع الحدث <code>'change' | *<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> الذي يستعمل | ====مؤشرات الفهرسة (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٬097: | سطر 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 | |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. | |أضيف هذا التابع. | ||
* <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 | {| 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 | |+سجل التغييرات | ||
في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (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>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> | {| class="wikitable mw-collapsible" | ||
إنه من غير الآمن استدعاء التابع <code>fs.write()</code> عدة مرات مع نفس الملف دون انتظار رد النداء. في مثل هذه الحالة، يُنصَح باستعمال التابع <code>fs.createWriteStream | |+سجل التغييرات | ||
في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (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> | |- | ||
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. | |} | ||
* <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>options</code>: [[JavaScript/Object|<Object>]] | [[JavaScript/String|<string>]] | ||
** <code>mod</code>: [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666 | **<code>encoding</code>: [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</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. | *<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>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>fs.writeSync(fd, buffer[, offset[, length[, position]]])</code>== | ||
{| class="wikitable mw-collapsible" | |||
|+سجل التغييرات | |||
!الإصدار | |||
!التغييرات | |||
|- | |||
|v10.10.0 | |||
|يمكن أن يكون المعامل <code>buffer</code> الآن كائنًا من النوع <code>TypeError</code> أو النوع <code>DataView</code>. | |||
|- | |||
|v7.4.0 | |||
|يمكن الآن أن يكون المعامل <code>buffer</code> كائنًا من النوع <code>Uint8Array</code>. | |||
|- | |||
|v7.2.0 | |||
|أصبح تمرير المعاملين <code>offset</code> و <code>length</code> اختياريًّا الآن. | |||
|- | |||
|v0.1.21 | |||
|أضيف هذا التابع. | |||
|} | |||
*<code>fd</code>: [[JavaScript/Number|<integer>]] | |||
*<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>typeof position !== 'number'</code>، فستُكتَب البيانات بدءًا من موضع المؤشر الحالي في الملف. اطلع على الدالة <code>[http://man7.org/linux/man-pages/man2/pwrite.2.html pwrite(2)]</code>. | |||
*القيم المعادة: [[JavaScript/Number|<number>]] عدد البايتات التي كُتبَت. | |||
يكتب هذا التابع البيانات المحددة في الذاكرة <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>== | |||
{| 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 - قيد التجريب. | |||
توفِّر الواجهة البرمجية <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>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>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>filehandle.chown(uid, gid)</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٬342: | سطر 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. | ||
* | *<code>buffer</code>: [[Node.js/buffer|<Buffer>]] | [[JavaScript/Uint8Array|<Uint8Array>]] يمثِّل ذاكرة التخزين المؤقتة التي ستُكتَب فيها البيانات المقروءة من الملف. | ||
==== <code>filehandle. | *<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>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>]] اطلع على القسم «<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/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>==== | |||
{| class="wikitable mw-collapsible" | |||
|+سجل التغييرات | |||
!الإصدار | |||
* <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>]] اطلع على القسم | |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٬417: | سطر 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٬440: | سطر 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>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>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. | *<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٬486: | سطر 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.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. | *<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>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>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. | *<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. | *<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. | *<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. | *<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٬531: | سطر 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٬542: | سطر 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. | *<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. | |||
* <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. | *<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. | *<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 | |v10.5.0 | ||
يقبل التابع كائن <code>options</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع | |يقبل التابع كائن <code>options</code> إضافي يحدِّد إذا كان يجب أن تكون القيم العددية المعادة من النوع <code>bigint</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. | *<code>options</code>: [[JavaScript/Object|<Object>]] | ||
* <code>options</code>: [[JavaScript/Object|<Object>]] | **<code>bigint</code>: [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false</code>. | ||
** <code>bigint</code>: [[JavaScript/Boolean|<boolean>]] يحدِّد إذا كان يجب أن تكون القيم العددية في الكائن <code>fs.Stats</code> المعاد من النوع bigint. القيمة الافتراضية هي: <code>false</code>. | *القيم المعادة: [[JavaScript/Promise|<Promise>]] | ||
* القيم المعادة: <Promise> | يجلب هذا التابع معلومات حول الوصلة الرمزية ذات المسار <code>path</code> عبر استدعاء دالة النظام <code>lstat(2)</code> بشكل غير متزامن. يُقبَل الكائن [[JavaScript/Promise|<code>Promise</code>]] مع الكائن <code>fs.Stats</code> للوصلة الرمزية المعطاة عند نجاح العملية. | ||
يجلب هذا التابع معلومات حول الوصلة الرمزية ذات المسار <code>path</code> عبر استدعاء دالة النظام <code>lstat(2)</code> بشكل غير متزامن. يُقبَل الكائن <code>Promise</code> مع الكائن <code>fs.Stats</code> للوصلة الرمزية المعطاة عند نجاح العملية. | ===<code>fsPromises.mkdir(path[, mode])</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. | *<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>mode</code>: [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o777</code>. | ||
* القيم المعادة: <Promise> | *القيم المعادة: [[JavaScript/Promise|<Promise>]] | ||
ينشئ هذا التابع مجلدًا جديدًا بشكل غير متزامن ثم يقبل الكائن <code>Promise</code> دون أية وسائط عند نجاح العملية. | ينشئ هذا التابع مجلدًا جديدًا بشكل غير متزامن ثم يقبل الكائن [[JavaScript/Promise|<code>Promise</code>]] دون أية وسائط عند نجاح العملية. | ||
=== <code>fsPromises.mkdtemp(prefix[, options])</code> === | ===<code>fsPromises.mkdtemp(prefix[, options])</code>=== | ||
أضيف في الإصدار: v10.0.0. | أضيف في الإصدار: v10.0.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>encoding</code>: [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code>'utf8'</code>. | ||
* القيم المعادة: <Promise> | *القيم المعادة: [[JavaScript/Promise|<Promise>]] | ||
ينشئ هذا التابع مجلدًا فريدًا مؤقتًا بشكل غير متزامن ثم يقبل الكائن <code>Promise</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-')) | ||
يولِّد هذا التابع ستة محارف عشوائية لتضاف إلى نهاية البادئة <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. | أضيف في الإصدار: 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. | *<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>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>mode</code>: [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666</code> (قابلية القراءة والكتابة). | ||
* القيم المعادة: <Promise> | *القيم المعادة: [[JavaScript/Promise|<Promise>]] | ||
يفتح هذا التابع ملفًا بشكل غير متزامن ثم يعيد الكائن <code>Promise</code> مع المقبض <code>FileHandle</code> لذاك الملف عند نجاح العملية. اطلع على توثيق الدالة <code>open(2)</code> لتفاصيل أوسع. | يفتح هذا التابع ملفًا بشكل غير متزامن ثم يعيد الكائن [[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>mode</code> نمط الملف (الأذونات والبتات اللاصقة [sticky bits]) في حال لم يكن الملف موجودًا وأنشئ آنذاك. | ===<code>fsPromises.readdir(path[, options])</code>=== | ||
تأخذ دالة رد النداء وسيطين هما: <code>err</code> و <code>fd</code>. | {| class="wikitable mw-collapsible" | ||
تعدُّ بعض المحارف (مثل <code>< > : " / \ | ? *</code>) محجوزةً في ويندوز كما أشير إلى ذلك التوثيق «تسمية الملفات، والمسارات، ومجالات الأسماء». في نظام الملفات NTFS، إن احتوى اسم الملف نقطتين رأسيتين، فستفتح Node.js مجرًى في نظام الملفات كما موضح في هذه الصفحة. | |+سجل التغييرات | ||
=== <code>fsPromises.readdir(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>]] | [[JavaScript/Number|<integer>]] اسمُ أو مقبض (<code>FileHandle</code>) ملفٍ. | |||
*<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/Promise|<Promise>]] | |||
يقرأ هذا التابع كامل محتوى الملف ذي المسار <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>path</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8. | |||
* <code>options</code>: [[JavaScript/String|<string>]] | [[JavaScript/Object|<Object>]] | |||
** <code>encoding</code>: [[JavaScript/String|<string>]] القيمة الافتراضية هي: <code> | |||
** <code> | |||
* القيم المعادة: <Promise> | |||
يقرأ هذا التابع محتوى | |||
=== <code>fsPromises. | |||
أضيف في الإصدار: 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. | *<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> | **<code>encoding</code>: [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>. | ||
* | *القيم المعادة: [[JavaScript/Promise|<Promise>]] | ||
يقرأ هذا التابع محتوى الوصلة الرمزية ذات المسار <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>]]. | |||
===<code>fsPromises.realpath(path[, options])</code>=== | |||
يُقبَل الكائن <code>Promise</code> مع محتوى | |||
=== <code>fsPromises. | |||
أضيف في الإصدار: 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. | *<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> ثم يقبل الكائن [[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>options</code> الاختياري سلسلة نصية تحدِّد الترميز المراد استعماله، أو كائنًا يملك الخاصية <code>encoding</code> التي تحدِّد ترميز المحارف المراد استعماله مع | ===<code>fsPromises.rename(oldPath, newPath)</code>=== | ||
=== <code>fsPromises. | |||
أضيف في الإصدار: v10.0.0. | أضيف في الإصدار: v10.0.0. | ||
* <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> | *<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>]] | ||
*القيم المعادة: [[JavaScript/Promise|<Promise>]] | |||
يغيِّر هذا التابع اسم الملف <code>oldPath</code> إلى <code>newPath</code> المعطى بشكل غير متزامن ثم يقبل الكائن [[JavaScript/Promise|<code>Promise</code>]] دون أية وسائط عند نجاح العملية. | |||
===<code>fsPromises.rmdir(path)</code>=== | |||
=== <code>fsPromises. | |||
أضيف في الإصدار: v10.0.0. | أضيف في الإصدار: v10.0.0. | ||
* <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/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>=== | |||
=== <code>fsPromises. | {| class="wikitable mw-collapsible" | ||
|+سجل التغييرات | |||
* <code>path</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[Node.js/url#.D9.88.D8.A7.D8.AC.D9.87.D8. | !الإصدار | ||
* | !التغييرات | ||
|- | |||
|v10.5.0 | |||
=== <code>fsPromises. | |يقبل التابع كائن <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> بشكل غير متزامن ثم يقبل الكائن [[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>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>. | |||
*القيم المعادة: [[JavaScript/Promise|<Promise>]] | |||
ينشئ هذا التابع وصلة رمزيَّةً للملف المحدد بالمسار <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>fsPromises.truncate(path[, len])</code>=== | |||
* <code> | |||
* <code> | |||
* القيم المعادة: <Promise> | |||
=== <code>fsPromises. | |||
أضيف في الإصدار: v10.0.0. | أضيف في الإصدار: v10.0.0. | ||
* <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> | *<code>len</code>: [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0</code>. | ||
*القيم المعادة: [[JavaScript/Promise|<Promise>]] | |||
يقطع هذا التابع الملف ذا المسار <code>path</code> إلى الحجم <code>len</code> ثم يقبل الكائن [[JavaScript/Promise|<code>Promise</code>]] دون أي وسائط عند نجاح العملية. يجب أن يكون المسار <code>path</code> سلسلة نصية أو كائنًا من النوع <code>Buffer</code>. | |||
===<code>fsPromises.unlink(path)</code>=== | |||
=== <code>fsPromises. | |||
أضيف في الإصدار: 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. | *<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>[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. | |||
أضيف في الإصدار: v10.0.0. | أضيف في الإصدار: v10.0.0. | ||
* <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>]] | ||
* القيم المعادة: <Promise> | *<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>fsPromises. | *القيم المعادة: [[JavaScript/Promise|<Promise>]] | ||
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار <code>path</code> المعطى بشكل غير متزامن ثم يقبل الكائن [[JavaScript/Promise|<code>Promise</code>]] دون أي وسائط عند نجاح العملية. يخضع الوسيطان <code>atime</code> و <code>mtime</code> إلى القاعدتين التاليتين: | |||
*يمكن أن تكون القيم إما أعدادًا تمثل الوقت في توقيت يونكس (Unix epoch time)، أو تواريخ، أو سلاسل نصية عددية مثل <code>'123456789.0'</code>. | |||
*إن لم يكن بالإمكان تحويل القيمة إلى عددٍ، أو كانت <code>NaN</code> أو <code>Infinity</code> أو <code>Infinity-</code>، فسيُرمَى خطأٌ. | |||
===<code>fsPromises.writeFile(file, data[, options])</code>=== | |||
أضيف في الإصدار: v10.0.0. | أضيف في الإصدار: v10.0.0. | ||
* <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>options</code>: [[JavaScript/Object|<Object>]] | [[JavaScript/String|<string>]] | |||
**<code>encoding</code>: [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>. | |||
**<code>mod</code>: [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666</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>. | |||
*القيم المعادة: [[JavaScript/Promise|<Promise>]] | |||
يكتب هذا التابع البيانات الموجودة في الوسيط <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>fs</code>== | |||
يمكن تصدير الثوابت الموجودة في هذا القسم عبر استدعاء <code>fs.constants</code>. انتبه إلى أنه لن تكون جميع الثوابت متاحةً على جميع أنظمة التشغيل. | |||
===ثوابت الوصول للملف=== | |||
* <code>data</code>: [[JavaScript/String|<string>]] | [[Node.js/buffer|<Buffer>]] | [[JavaScript/TypedArray|<TypedArray>]] | [[JavaScript/DataView|<DataView>]] | تستخدم الثوابت التالية مع التابع <code>[[Node.js/fs#fs.access.28path.5B.2C mode.5D.2C callback.29.E2.80.8E|fs.access()]]</code>: | ||
* <code>options</code>: [[JavaScript/Object|<Object>]] | [[JavaScript/String|<string>]] | {| class="wikitable" | ||
** <code>encoding</code>: [[JavaScript/String|<string>]] | [[JavaScript/null|<null>]] القيمة الافتراضية هي: <code>'utf8'</code>. | !الثابت | ||
** <code>mod</code>: [[JavaScript/Number|<integer>]] القيمة الافتراضية هي: <code>0o666</code>. | !الوصف | ||
** <code>flag</code>: [[JavaScript/String|<string>]] اطلع على القسم | |- | ||
* القيم المعادة: <Promise> | |<code>F_OK</code> | ||
يكتب هذا التابع البيانات الموجودة في الوسيط <code>data</code> في الملف <code>file</code> المعطى بشكل غير متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يمكن أن يكون الوسيط <code>data</code> سلسلةً نصيةً أو مخزنًا مؤقتًا في الذاكرة (buffer). يُقبَل الكائن <code>Promise</code> دون أي وسائط عند نجاح العملية. | |رايةٌ تشير إلى أن الملف ظاهرٌ للعملية المستدعاة. هذا مفيدٌ لتحديد إن كان الملف موجودًا أم ولا، ولكنه لا يفيد بتحديد أذوناته. | ||
سيُتجاهَل الخيار <code>encoding</code> إن كان الوسيط <code>data</code> مخزنًا مؤقتًا. | |||
إن كان الوسيط <code>options</code> سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز. | |||
يجب على مقبض الملف <code>FileHandle</code> المعطى أن يدعم عملية الكتابة على الملف. | |||
إنه من غير الآمن استدعاء التابع <code>fsPromises.writeFile()</code> عدة مرات مع نفس الملف دون انتظار قبول الكائن <code>Promise</code> (أو رفضه). | |||
==الثوابت المستعملة في الوحدة <code>fs</code> == | |||
يمكن تصدير الثوابت الموجودة في هذا القسم عبر استدعاء <code>fs.constants</code>. | |||
انتبه إلى أنه لن تكون جميع الثوابت متاحةً على جميع أنظمة التشغيل. | |||
=== ثوابت الوصول للملف === | |||
تستخدم الثوابت التالية مع التابع <code>fs.access()</code>: | |||
هذا الثابت هو القيمة الافتراضية المستعملة عند عدم تحديد أي ثابت. | هذا الثابت هو القيمة الافتراضية المستعملة عند عدم تحديد أي ثابت. | ||
R_OK | |- | ||
رايةٌ تشير إلى أنَّ الملف قابل للقراءة من قبل العملية المستدعاة. | |<code>R_OK</code> | ||
W_OK | |رايةٌ تشير إلى أنَّ الملف قابل للقراءة من قبل العملية المستدعاة. | ||
رايةٌ تشير إلى أنَّ الملف قابل للكتابة من قبل العملية المستدعاة. | |- | ||
X_OK | |<code>W_OK</code> | ||
رايةٌ تشير إلى أنَّ الملف قابل للتنفيذ من قبل العملية المستدعاة. ليس لهذه الراية أي تأثير في ويندوز (ستسلك نفس سلوك الراية <code>fs.constants. | |رايةٌ تشير إلى أنَّ الملف قابل للكتابة من قبل العملية المستدعاة. | ||
|- | |||
|<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_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> | |||
|ثابت نوع ملف من أجل مقبس. | |||
|} | |||
===ثوابت نمط الملف=== | |||
=== ثوابت نمط الملف === | |||
تستعمل الثوابت التالية الخاصية <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> | |||
|نمط ملف يشير إلى قابلة التنفيذ من قبل الآخرين. | |||
|} | |||
==رايات نظام الملفات== | |||
== رايات نظام الملفات == | |||
الرايات التالية متاحة متى ما قبل الخيار <code>flag</code> أن يأخذ سلسلة نصية: | الرايات التالية متاحة متى ما قبل الخيار <code>flag</code> أن يأخذ سلسلة نصية: | ||
* <code>'a' | *<code>'a'</code>: فتح الملف من أجل الإضافة (appending). سيُنشأ الملف إن لم يكون موجودًا. | ||
* <code>'ax' | *<code>'ax'</code>: شبيهةٌ بالراية <code>'a'</code> باستثناء أن العملية ستفشل إن كان الملف موجودًا. | ||
* <code>'a+' | *<code>'a+'</code>: فتح الملف للقراءة والإضافة. سيُنشَا الملف إن لم يكن موجودًا. | ||
* <code>'ax+' | *<code>'ax+'</code>: شبيهةٌ بالراية <code>'a+'</code> باستثناء أن العملية ستفشل إن كان الملف موجودًا. | ||
* <code> | *<code>'as'</code>: فتح الملف للإضافة في وضع التزامن (synchronous mode). سيُنشَأ الملف إن لم يكن موجودًا. | ||
* <code>'as+' | *<code>'as+'</code>: فتح الملف للقراءة والإضافة في وضع التزامن. سيُنشَأ الملف إن لم يكن موجودًا. | ||
* <code>'r' | *<code>'r'</code>: فتح الملف للقراءة. سيُطلَق استثناء إن لم يكن الملف موجودًا. | ||
* <code>'r+' | *<code>'r+'</code>: فتح الملف للقراءة والكتابة. سيُطلَق استثناء إن لم يكن الملف موجودًا. | ||
* <code>'rs+' | *<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>'wx'</code>: شبيهةٌ بالراية <code>'w'</code> باستثناء أن العملية ستفشل إن ان الملف موجودًا. | ||
* <code>'wx' | *<code>'w+'</code>: فتح الملف للقراءة والكتابة. سيُنشَأ الملف إن لم يكن موجودًا أو سيُقتطَع إن كان موجودًا. | ||
* <code>'w+' | *<code>'wx+'</code>: شبيهةٌ بالراية <code>'w+'</code> باستثناء أن العملية ستفشل إن كان الملف موجودًا. | ||
* <code>'wx+' | يمكن أن يكون الخيار <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' | |||
في لينكس، لن يحرك مؤشر الكتابة إلى موضع معين عند فتح الملف في وضع الإضافة (append mode). ستتجاهل النواة الوسيط <code>position</code> وستضيف البيانات إلى نهاية الملف دومًا. | |||
تعديل ملف بدلًا من استبداله قد يتطلَّب فتحه في الوضع <code>'r+' | |||
يعتمد سلوك بعض الرايات على المنصة المستعملة آنذاك. بناءً على ذلك، سيعيد فتح مجلدٍ في نظام التشغيل maxOS أو لينكس مع الراية <code>'a+' | |||
<syntaxhighlight lang="javascript"> | |||
// macOS and Linux | // macOS and Linux | ||
fs.open('<directory>', 'a+', (err, fd) => { | fs.open('<directory>', 'a+', (err, fd) => { | ||
سطر 2٬892: | سطر 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>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.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الكائن fs.Dirent
يمثِّل جهازًا كتليًّا (block device)، أو القيمة false
خلا ذلك.
dirent.isCharacterDevice()
أضيف في الإصدار: v10.10.0.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الكائن fs.Dirent
يمثِّل جهازًا محرفيًّا (character device)، أو القيمة false
خلا ذلك.
dirent.isDirectory()
أضيف في الإصدار: v10.10.0.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الكائن fs.Dirent
يمثِّل مجلَّدًا في نظام الملفات (file system directory)، أو القيمة false
خلا ذلك.
dirent.isFIFO()
أضيف في الإصدار: v10.10.0.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الكائن fs.Dirent
يمثِّل الأنبوب FIFO (اختصار للعبارة first-in-first-out أي «من دخل أولًا يخرج أولًا»، كما يدعى أحيانًا «أنبوبًا مسمًى») ، أو القيمة false
خلا ذلك.
dirent.isFile()
أضيف في الإصدار: v10.10.0.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الكائن fs.Dirent
يمثِّل ملفًا طبيعيًّا، أو القيمة false
خلا ذلك.
dirent.isSocket()
أضيف في الإصدار: v10.10.0.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الكائن fs.Dirent
يمثِّل مقبسًا (socket)، أو القيمة false
خلا ذلك.
dirent.isSymbolicLink()
أضيف في الإصدار: v10.10.0.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة 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.
error
: <Error>
يُطلَق هذا الحدث عندما يحدث خطأٌ أثناء عملية مراقبة الملف. لن يكون الكائن 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.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الكائن fs.Stats
يمثِّل جهازًا كتليًّا (block device)، أو القيمة false
خلاف ذلك.
stats.isCharacterDevice()
أضيف في الإصدار: v0.1.10.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الكائن fs.Stats
يمثِّل جهازًا محرفيًّا (character device)، أو القيمة false
خلاف ذلك.
stats.isDirectory()
أضيف في الإصدار: v0.1.10.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الكائن fs.Stats
يمثِّل مجلَّدًا في نظام الملفات (file system directory)، أو القيمة false
خلاف ذلك.
stats.isFIFO()
أضيف في الإصدار: v0.1.10.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الكائن fs.Stats
يمثِّل الأنبوب FIFO (اختصارٌ للعبارة first-in-first-out أي «من دخل أولًا يخرج أولًا»، كما يدعى أحيانًا «أنبوبًا مسمًى»)، أو القيمة false
خلاف ذلك.
stats.isFile()
أضيف في الإصدار: v0.1.10.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الكائن fs.Stats
يمثِّل ملفًا طبيعيًّا، أو القيمة false
خلاف ذلك.
stats.isSocket()
أضيف في الإصدار: v0.1.10.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة true
إن كان الكائن fs.Stats
يمثِّل مقبسًا (socket)، أو القيمة false
خلاف ذلك.
stats.isSymbolicLink()
أضيف في الإصدار: v0.1.10.
- القيم المعادة: <boolean>
يعيد هذا التابع القيمة 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
: <string> | <Buffer> | <URL>mode
: <integer> القيمة الافتراضية هي:fs.constants.F_OK
.callback
: <Function>err
: <Error>
يفحص هذا التابع أذونات المستخدم للملف أو المجلد المحدَّد في المسار 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 | أضيف هذا التابع. |
path
: <string> | <Buffer> | <URL> | <number> اسم أو واصف الملف.data
: <string> | <Buffer>options
: <Object> | <string>encoding
: <string> | <null> القيمة الافتراضية هي:'utf8'
.mode
: <integer> القيمة الافتراضية هي:0o666
.mode
: <string> ارجع إلى القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'a'
.
callback
: <Function>err
: <Error>
يضيف هذا التابع بشكل غير متزامن بياناتٍ إلى ملف، أو ينشئ ملفًا ويضع البيانات فيه إن لم يكن هذا الملف موجودًا. يمكن أن تكون البيانات 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 | أضيف هذا التابع. |
path
: <string> | <Buffer> | <URL> | <number> اسم أو واصف الملف.data
: <string> | <Buffer>options
: <Object> | <string>encoding
: <string> | <null> القيمة الافتراضية هي:'utf8'
.mode
: <integer> القيمة الافتراضية هي:0o666
.mode
: <string> ارجع إلى القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'a'
.
يضيف هذا التابع بشكل متزامن بياناتٍ إلى ملف، أو ينشئ ملفًا ويضع البيانات فيه إن لم يكن هذا الملف موجودًا. يمكن أن تكون البيانات 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 | أضيف هذا التابع. |
path
: <string> | <Buffer> | <URL>uid
: <integer>gid
: <integer>callback
: <Function>err
: <Error>
يغيِّر هذا التابع بشكل غير متزامن المالك والمجموعة المالكة لملف. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
انظر أيضًا: 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 | أضيف هذا التابع. |
fd
: <integer>callback
: <Function>err
: <Error>
يغلق هذا التابع بشكل غير متزامن ملفًا مفتوحًا، إذ يُنفِّذ دالة النظام close(2)
. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
fs.closeSync(fd)
أضيف في الإصدار: v0.1.21.
fd
: <integer>
يغلق هذا التابع بشكل متزامن ملفًا مفتوحًا، إذ يُنفِّذ دالة النظام 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 | أضيف هذا التابع. |
path
: <string> | <Buffer> | <URL>options
: <Object> | <string>flags
: <string> ارجع إلى القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'r'
.encoding
: <string> القيمة الافتراضية هي:null
.fd
: <integer> القيمة الافتراضية هي:null
.mode
: <integer> القيمة الافتراضية هي:0o666
.autoClose
: <boolean> القيمة الافتراضية هي:true
.start
: <integer>end
: <integer> القيمة الافتراضية هي:Infinity
.highWaterMark
: <integer> القيمة الافتراضية هي:64 * 1024
.
- القيم المعادة: <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 | أضيف هذا التابع. |
path
: <string> | <Buffer> | <URL>callback
: <Function> القيمة الافتراضية هي:true
.exists
: <boolean>
يتحقق هذا التابع إن كان المسار المعطى موجودًا أم لا عبر التحقق من نظام الملفات ثم يستدعي الوسيط 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 | أضيف هذا التابع. |
fd
: <integer>mode
: <integer>callback
: <Function>err
: <Error>
يغيِّر هذا التابع نمط الملف (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 | أضيف هذا التابع. |
fd
: <integer>uid
: <integer>gid
: <integer>callback
: <Function>err
: <Error>
يغيِّر هذا التابع المستخدم المالك للملف عبر استدعاء النظام 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 | أضيف هذا التابع. |
fd
: <integer>callback
: <Function>err
: <Error>
ينفِّذ هذا التابع استدعاء النظام fdatasync(2)
بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
fs.fdatasyncSync(fd)
أضيف في الإصدار: v0.1.96.
fd
: <integer>
ينفِّذ هذا التابع استدعاء النظام 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>err
: <Error>
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 | أضيف هذا التابع. |
fd
: <integer>callback
: <Function>err
: <Error>
ينفِّذ هذا التابع دالة النظام fsync(2)
بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
fs.fsyncSync(fd)
أضيف في الإصدار: 0.1.96.
fd
: <integer>
ينفِّذ هذا التابع دالة النظام fsync(2)
بشكل متزامن. يعيد هذا التابع القيمة undefined
.
fs.ftruncate(fd[, len], callback)
الإصدار | التغييرات |
---|---|
v10.0.0 | لم يعد المعامل callback اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError في وقت التشغيل إن لم يُمرَّر.
|
v7.0.0 | لم يعد المعامل callback اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|
v0.8.6 | أضيف هذا التابع. |
fd
: <integer>len
: <integer> القيمة الافتراضية هي:0
.callback
: <Function>err
: <Error>
يقطع هذا التابع الملف ذا الواصف 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 | أضيف هذا التابع. |
fd
: <integer>atime
: <number> | <string> | <Date>mtime
: <number> | <string> | <Date>callback
: <Function>err
: <Error>
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بواصف الملف المعطى. اطلع على التابع 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 إن لم يُمرَّر.
|
path
: <string> | <Buffer> | <URL>uid
: <integer>gid
: <integer>callback
: <Function>err
: <Error>
يغيِّر هذا التابع المالك والمجموعة المالكة لملف عبر استدعاء 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 | أضيف هذا التابع. |
existingPath
: <string> | <Buffer> | <URL>newPath
: <string> | <Buffer> | <URL>callback
: <Function>err
: <Error>
ينشئ هذا التابع وصلةً جديدةً (وصلةً صلبةً) للملف الحالي عبر استدعاء 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>err
: <Error>
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 | أضيف هذا التابع. |
path
: <string> | <Buffer> | <URL>mode
: <integer> غير مدعوم على ويندوز. القيمة الافتراضية هي:0o777
.callback
: <Function>err
: <Error>
ينشئ هذا التابع مجلدًا جديدًا بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه. انظر أيضًا الدالة 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
: <string>options
: <string> | <Object>encoding
: <string> القيمة الافتراضية هي:'utf8'
.
callback
: <Function>
ينشئ هذا التابع مجلدًا فريدًا مؤقتًا بشكل غير متزامن.
يولِّد هذا التابع ستة محارف عشوائية لتضاف في نهاية البادئة 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.
prefix
: <string>options
: <string> | <Object>encoding
: <string> القيمة الافتراضية هي:'utf8'
.
- القيم المعادة: <string>
ينشئ هذا التابع مجلدًا مؤقتًا فريدًا بشكل متزامن.
لمزيد من المعلومات، اطلع على توثيق الإصدار الغير متزامن من هذا التابع الذي هو 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 | أضيف هذا التابع. |
path
: <string> | <Buffer> | <URL>flags
: <string> | <number> اطلع على القسم «دعم رايات نظام الملفات».mode
: <integer> القيمة الافتراضية هي:0o666
(قابلية القراءة والكتابة).callback
: <Function>
يفتح هذا التابع ملفًا بشكل غير متزامن. اطلع على دليل الدالة 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 | أضيف هذا التابع. |
path
: <string> | <Buffer> | <URL>flags
: <string> | <number> اطلع على القسم «دعم رايات نظام الملفات».mode
: <integer> القيمة الافتراضية هي:0o666
(قابلية القراءة والكتابة).- القيم المعادة: <number>
يفتح هذا التابع ملفًا بشكل متزامن. اطلع على دليل الدالة 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 | أضيف هذا التابع. |
path
: <string> | <Buffer> | <URL>options
: <string> | <Object>callback
: <Function>err
: <Error>files
: <string[]> | <Buffer[]> | <fs.Dirent[]>
يقرأ هذا التابع محتوى المجلد المحدَّد في المسار عبر تنفيذ الدالة 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 | أضيف هذا التابع. |
path
: <string> | <Buffer> | <URL>options
: <string> | <Object>- القيم المعادة: <string[]> | <Buffer[]> | <fs.Dirent[]>
يقرأ هذا التابع محتوى المجلد المحدَّد في المسار عبر تنفيذ الدالة 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
: <string> | <Buffer> | <URL> | <integer> اسمُ أو واصفُ ملفٍ.options
: <string> | <Object>encoding
: <string> | <null> القيمة الافتراضية هي:null
.flag
: <string> اطلع على قسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'r'
.
callback
: <Function>
يقرأ هذا التابع كامل محتوى الملف ذي المسار 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
: <string> | <Buffer> | <URL> | <integer> اسمُ أو واصفُ ملفٍ.options
: <string> | <Object>encoding
: <string> | <null> القيمة الافتراضية هي:null
.flag
: <string> اطلع على قسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'r'
.
- القيم المعادة: <string> | <Buffer>
يقرأ هذا التابع كامل محتوى الملف ذي المسار 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
: <string> | <Buffer> | <URL>options
: <string> | <Object>- القيم المعادة: <string> | <Buffer>
يقرأ هذا التابع محتوى الوصلة الرمزية ذات المسار 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 | أضيف هذا التابع. |
path
: <string> | <Buffer> | <URL>options
: <string> | <Object>- القيم المعادة: <string> | <Buffer>
يعيد هذا التابع اسم المسار المستبين. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو fs.realpath()
.
fs.realpathSync.native(path[, options])
أضيف في الإصدار: v9.2.0.
path
: <string> | <Buffer> | <URL>options
: <string> | <Object>- القيم المعادة: <string> | <Buffer>
يعيد هذا التابع المسار الأساسي المطلق للمسار 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
: <string> | <Buffer> | <URL>newPath
: <string> | <Buffer> | <URL>callback
: <Function>err
: <Error>
يغيِّر هذا التابع اسم الملف 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
: <string> | <Buffer> | <URL>callback
: <Function>err
: <Error>
يحذف هذا التابع المجلد ذا المسار 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>err
: <Error>
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
: <string> | <Buffer> | <URL>path
: <string> | <Buffer> | <URL>type
: <string> القيمة الافتراضية هي:'file'
.callback
: <Function>err
: <Error>
ينشئ هذا التابع وصلة رمزيَّةً لملف المحدد بالمسار 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
: <string> | <Buffer> | <URL>path
: <string> | <Buffer> | <URL>type
: <string> القيمة الافتراضية هي:'file'
.callback
: <Function>err
: <Error>
ينشئ هذا التابع وصلة رمزيَّةً لملف المحدد بالمسار target
عبر استدعاء symlink(2)
بشكل متزامن. لمزيد من التفاصيل، ارجع إلى الإصدار الغير متزامن من هذا التابع الذي هو fs.symlink()
.
fs.truncate(path[, len], callback)
الإصدار | التغييرات |
---|---|
v10.0.0 | لم يعد المعامل callback اختياريًّا بعد الآن. سيُرمَى الخطأ TypeError في وقت التشغيل إن لم يُمرَّر.
|
v7.0.0 | لم يعد المعامل callback اختياريًّا بعد الآن. سيُطلَق تحذير إهمال مع المعرِّف DEP0013 إن لم يُمرَّر.
|
v0.8.6 | أضيف هذا التابع. |
path
: <string> | <Buffer> | <URL>len
: <integer> القيمة الافتراضية هي:0
.callback
: <Function>err
: <Error>
يقطع هذا التابع الملف ذا المسار 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
: <string> | <Buffer> | <URL>callback
: <Function>err
: <Error>
يزيل هذا التابع ملفًا أو وصلةً رمزيةً بشكل غير متزامن. لن تُعَط دالة رد النداء المُكمِّلة أية وسائط غير الاستثناء المحتمل وقوعه.
// هو ملف طبيعي '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 | أضيف هذا التابع. |
filename
: <string> | <Buffer> | <URL>atime
: <number> | <string> | <Date>mtime
: <number> | <string> | <Date>callback
: <Function>err
: <Error>
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار المعطى بشكل غير متزامن. يخضع الوسيطان 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 | أضيف هذا التابع. |
filename
: <string> | <Buffer> | <URL>atime
: <number> | <string> | <Date>mtime
: <number> | <string> | <Date>
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار المعطى بشكل متزامن. لمزيدٍ من التفاصيل، اطلع على توثيق الإصدار غير المتزامن من هذا التابع الذي هو 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>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>err
: <Error>bytesWritten
: <integer>buffer
: <Buffer> | <TypedArray> | <DataView>
يكتب هذا التابع البيانات المحددة في الذاكرة 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 | أضيف هذا التابع. |
file
: <string> | <Buffer> | <URL> | <integer> اسم أو واصف الملف.data
: <string> | <Buffer> | <TypedArray> | <DataView>options
: <Object> | <string>encoding
: <string> | <null> القيمة الافتراضية هي:'utf8'
.mod
: <integer> القيمة الافتراضية هي:0o666
.flag
: <string> اطلع على القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'w'
.
callback
: <Function>err
: <Error>
يكتب هذا التابع البيانات الموجودة في الوسيط 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 | أضيف هذا التابع. |
file
: <string> | <Buffer> | <URL> | <integer> اسم أو واصف الملف.data
: <string> | <Buffer> | <TypedArray> | <DataView>options
: <Object> | <string>encoding
: <string> | <null> القيمة الافتراضية هي:'utf8'
.mod
: <integer> القيمة الافتراضية هي:0o666
.flag
: <string> اطلع على القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'w'
.
يكتب هذا التابع البيانات الموجودة في الوسيط 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
: <string> | <Buffer>options
: <Object> | <string>encoding
: <string> | <null> القيمة الافتراضية هي:'utf8'
.mode
: <integer> القيمة الافتراضية هي:0o666
.flag
: <string> اطلع على القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'a'
.
- القيم المعادة: <Promise>
يضيف هذا التابع بيانات إلى هذا الملف، أو يُنشئ ملفًا إن لم يكن الملف موجودًا بعد. يمكن أن يكون الوسيط 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.
- القيم المعادة: <Promise>
ينفِّذ هذا التابع استدعاء النظام 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.
options
: <Object> | <string>encoding
: <string> | <null> القيمة الافتراضية هي:null
.flag
: <string> اطلع على القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'r'
.
- القيم المعادة: <Promise>
يقرأ هذا التابع كامل محتوى ملفٍ بشكل غير متزامن. يُقبَل الكائن 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.
- القيم المعادة: <Promise>
ينفِّذ هذا التابع دالة النظام fsync(2)
بشكل غير متزامن. يُقبَل الكائن Promise
دون أية وسائط عند نجاح العملية.
filehandle.truncate(len)
أضيف في الإصدار: v10.0.0.
يقطع هذا التابع الملف إلى الحجم 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.
atime
: <number> | <string> | <Date>mtime
: <number> | <string> | <Date>- القيم المعادة: <Promise>
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمقبض 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
: <string> | <Buffer> | <TypedArray> | <DataView>options
: <Object> | <string>encoding
: <string> | <null> القيمة الافتراضية هي:'utf8'
.mod
: <integer> القيمة الافتراضية هي:0o666
.flag
: <string> اطلع على القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'w'
.
- القيم المعادة: <Promise>
يكتب هذا التابع البيانات الموجودة في الوسيط data
في الملف بشكل غير متزامن، إذ يستبدل الملف إن كان موجودًا مسبقًا. يمكن أن يكون الوسيط data
سلسلةً نصيةً أو مخزنًا مؤقتًا في الذاكرة (buffer). يُقبَل الكائن Promise
دون أية وسائط عند نجاح العملية. سيُتجاهَل الخيار encoding
إن كان الوسيط data
مخزنًا مؤقتًا (buffer). إن كان الوسيط options
سلسلةً نصيةً، فسيُحدِّد حينئذٍ الترميز. يجب على مقبض الملف FileHandle
المعطى أن يدعم عملية الكتابة على الملف. إنه من غير الآمن استدعاء التابع filehandle.writeFile()
عدة مرات مع نفس الملف دون قبول الكائن Promise
(أو رفضه).
fsPromises.access(path[, mode])
أضيف في الإصدار: v10.0.0.
path
: <string> | <Buffer> | <URL>mode
: <integer> القيمة الافتراضية هي:fs.constants.F_OK
.- القيم المعادة: <Promise>
يفحص هذا التابع أذونات المستخدم للملف أو المجلد المحدَّد في المسار 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.
path
: <string> | <Buffer> | <URL> | <number> اسم أو مقبض (FileHandle
) الملف.data
: <string> | <Buffer>options
: <Object> | <string>encoding
: <string> | <null> القيمة الافتراضية هي:'utf8'
.mode
: <integer> القيمة الافتراضية هي:0o666
.mode
: <string> ارجع إلى القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'a'
.
- القيم المعادة: <Promise>
يضيف هذا التابع بياناتٍ إلى ملف بشكل غير متزامن، أو ينشئ ملفًا ويضع البيانات فيه إن لم يكن هذا الملف موجودًا. يمكن أن تكون البيانات 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.
existingPath
: <string> | <Buffer> | <URL>newPath
: <string> | <Buffer> | <URL>- القيم المعادة: <Promise>
ينشئ هذا التابع وصلةً جديدةً (وصلةً صلبةً) للملف الحالي عبر استدعاء 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.
path
: <string> | <Buffer> | <URL>mode
: <integer> القيمة الافتراضية هي:0o777
.- القيم المعادة: <Promise>
ينشئ هذا التابع مجلدًا جديدًا بشكل غير متزامن ثم يقبل الكائن Promise
دون أية وسائط عند نجاح العملية.
fsPromises.mkdtemp(prefix[, options])
أضيف في الإصدار: v10.0.0.
prefix
: <string>options
: <string> | <Object>encoding
: <string> القيمة الافتراضية هي:'utf8'
.
- القيم المعادة: <Promise>
ينشئ هذا التابع مجلدًا فريدًا مؤقتًا بشكل غير متزامن ثم يقبل الكائن 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.
path
: <string> | <Buffer> | <URL>flags
: <string> | <number> اطلع على القسم «دعم رايات نظام الملفات».mode
: <integer> القيمة الافتراضية هي:0o666
(قابلية القراءة والكتابة).- القيم المعادة: <Promise>
يفتح هذا التابع ملفًا بشكل غير متزامن ثم يعيد الكائن 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
: <string> | <Buffer> | <URL> | <integer> اسمُ أو مقبض (FileHandle
) ملفٍ.options
: <string> | <Object>encoding
: <string> | <null> القيمة الافتراضية هي:null
.flag
: <string> اطلع على قسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'r'
.
- القيم المعادة: <Promise>
يقرأ هذا التابع كامل محتوى الملف ذي المسار 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
: <string> | <Buffer> | <URL>newPath
: <string> | <Buffer> | <URL>- القيم المعادة: <Promise>
يغيِّر هذا التابع اسم الملف 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
: <string> | <Buffer> | <URL>path
: <string> | <Buffer> | <URL>type
: <string> القيمة الافتراضية هي:'file'
.- القيم المعادة: <Promise>
ينشئ هذا التابع وصلة رمزيَّةً للملف المحدد بالمسار target
بشكل غير متزامن ثم يقبل الكائن Promise
دون أي وسائط عند نجاح العملية. يمكن ضبط الوسيط type
إلى القيمة 'dir'
، أو 'file'
، أو 'junction'
وهو متاح في ويندوز فقط (يُتجاهل في المنصات الأخرى). تتطلب نقاط الوصل (junction points) في ويندوز أن يكون المسار الهدف مطلقًا. عند استعمال 'junction'
، سيحول الوسيط target
تلقائيًّا إلى مسار مطلق.
fsPromises.truncate(path[, len])
أضيف في الإصدار: v10.0.0.
path
: <string> | <Buffer> | <URL>len
: <integer> القيمة الافتراضية هي:0
.- القيم المعادة: <Promise>
يقطع هذا التابع الملف ذا المسار path
إلى الحجم len
ثم يقبل الكائن Promise
دون أي وسائط عند نجاح العملية. يجب أن يكون المسار path
سلسلة نصية أو كائنًا من النوع Buffer
.
fsPromises.unlink(path)
أضيف في الإصدار: v10.0.0.
يزيل هذا التابع ملفًا أو وصلةً رمزيةً عبر تنفيذ الدالة unlink(2)
بشكل غير متزامن ثم يقبل الكائن Promise
دون أي وسائط عند نجاح العملية.
fsPromises.utimes(path, atime, mtime)
أضيف في الإصدار: v10.0.0.
filename
: <string> | <Buffer> | <URL>atime
: <number> | <string> | <Date>mtime
: <number> | <string> | <Date>- القيم المعادة: <Promise>
يغيِّر هذا التابع بصمات وقت نظام الملفات للكائن المشار إليه بالمسار path
المعطى بشكل غير متزامن ثم يقبل الكائن Promise
دون أي وسائط عند نجاح العملية. يخضع الوسيطان atime
و mtime
إلى القاعدتين التاليتين:
- يمكن أن تكون القيم إما أعدادًا تمثل الوقت في توقيت يونكس (Unix epoch time)، أو تواريخ، أو سلاسل نصية عددية مثل
'123456789.0'
. - إن لم يكن بالإمكان تحويل القيمة إلى عددٍ، أو كانت
NaN
أوInfinity
أوInfinity-
، فسيُرمَى خطأٌ.
fsPromises.writeFile(file, data[, options])
أضيف في الإصدار: v10.0.0.
file
: <string> | <Buffer> | <URL> | <integer> اسم أو مقبض (FileHandle
) الملف.data
: <string> | <Buffer> | <TypedArray> | <DataView>options
: <Object> | <string>encoding
: <string> | <null> القيمة الافتراضية هي:'utf8'
.mod
: <integer> القيمة الافتراضية هي:0o666
.flag
: <string> اطلع على القسم «دعم رايات نظام الملفات». القيمة الافتراضية هي:'w'
.
- القيم المعادة: <Promise>
يكتب هذا التابع البيانات الموجودة في الوسيط 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()
لمسح جميع محتويات الملف.