وحدة fs¶
fs.readFile()¶
التمرين 1: أنشئ ملفًا بسيطًا باستخدام Node.js ، وأضف إليه وحدة fs . تلميح: استخدم require .
const fs = require('fs');
التمرين 2: أنشئ مجلدًا في مجلد العمل الحالي، وسمّه "myfiles". أنشئ ملفًا داخل هذا المجلد وسمّه "file.txt". أضف النص التالي إلى الملف.
Hello there!
Hope life is treating you well today!
التمرين 3: تأمّل الشيفرة التالية.
const fs = require('fs');
const path = require('path');
let fileToRead = path.join(__dirname, 'myfiles', 'file.txt');
fs.readFile(fileToRead, "utf-8", function(err, content){
if (err) throw err;
console.log(content);
});
إذا لم تُنشئ المجلد والملف في التمرين 2، فسيظهر خطأ عند محاولة تنفيذ التمرين 3.
[Error: ENOENT: no such file or directory, open '/dir/to/myfiles/file.txt']
إذا لم يحدث خطأ، فسيُعرض محتوى الملف:
Hello there!
Hope life is treating you well today!
fs.readFile()
العامل fs.readFile(filename, encoding, (err, data) => {}) تقرأ الملف المحدّد، وتستقبل اسم الملف, الترميز، و دالة رد نداء. تستقبل دالة رد النداء معاملين: err عند حدوث خطأ، و data الذي يحمل محتوى الملف.
التمرين 4: أنشئ ملفًا آخر داخل "myfiles"، وسمّه "style.css". أضف إليه المحتوى التالي، ثم اقرأه باستخدام الوحدة fs .
// myfiles/style.css
body, html{
height: 100%;
}
.container{
display: flex;
flex-direction: column;
align-items: center;
background: tomato;
color: #fffff;
padding: 1rem;
}
const fs = require('fs');
const path = require('path');
let fileToRead = path.join(__dirname, 'myfiles', 'style.css');
fs.readFile(fileToRead, "utf-8", function(err, content){
if (err) throw err;
console.log(content);
});
سيُطبع محتوى الملف في وحدة التحكم.
التمرين 5: أنشئ ملفًا آخر داخل "myfiles"، وسمّه "script.js". أضف إليه المحتوى التالي، ثم اقرأه باستخدام الوحدة fs .
//myfiles/script.js
let sum = (a, b) => a + b;
let result = sum(5, 7);
const fs = require('fs');
const path = require('path');
let fileToRead = path.join(__dirname, 'myfiles', 'script.js');
fs.readFile(fileToRead, "utf-8", function(err, content){
if (err) throw err;
console.log(content);
});
سيُطبع محتوى الملف في وحدة التحكم.
fs.mkdir()¶
التمرين 6: تأمّل الشيفرة التالية.
const fs = require('fs');
const path = require('path');
fs.mkdir(path.join(__dirname, 'static'), (err) => {
if (err) throw err;
console.log(`The directory is successfuly created.`);
});
إذا لم يحدث خطأ، فستظهر الرسالة The directory is successfully created. في وحدة التحكم.
fs.mkdir()
العامل fs.mkdir(directory_name, (err) => {}) تُنشئ مجلدًا جديدًا، وتستقبل اسم المجلد و دالة رد نداء. تستقبل دالة رد النداء المعامل err عند حدوث خطأ.
التمرين 7: أنشئ مجلدًا جديدًا وسمّه "public" باستخدام fs.mkdir() .
const fs = require('fs');
const path = require('path');
fs.mkdir(path.join(__dirname, 'public'), (err) => {
if (err) throw err;
console.log(`The directory is successfully created.`);
});
إذا لم يحدث خطأ، فستظهر الرسالة The directory is successfully created. في وحدة التحكم.
fs.rmdir()¶
التمرين 8: احذف "static" باستخدام fs.rmdir() .
const fs = require('fs');
const path = require('path');
fs.rmdir(path.join(__dirname, 'static'), (err) => {
if (err) throw err;
console.log(`The directory is deleted successfuly.`);
});
إذا لم يحدث خطأ، فستظهر الرسالة The directory is deleted successfuly في وحدة التحكم.
التمرين 9: احذف "public" باستخدام fs.rmdir() .
const fs = require('fs');
const path = require('path');
fs.rmdir(path.join(__dirname, 'public'), (err) => {
if (err) throw err;
console.log(`The directory is deleted successfuly.`);
});
إذا لم يحدث خطأ، فستظهر الرسالة The directory is deleted successfuly في وحدة التحكم.
fs.rmdir()
العامل fs.rmdir(directory_name, (err) => {}) تحذف مجلدًا، وتستقبل اسم المجلد و دالة رد نداء. تستقبل دالة رد النداء المعامل err عند حدوث خطأ.
fs.writeFile()¶
التمرين 10: تأمّل الشيفرة التالية.
const fs = require('fs');
const path = require('path');
fs.writeFile(path.join(__dirname, 'newfile.txt'), "Hi there", {encoding: "utf-8"}, (err) => {
if (err) throw err;
console.log("The file is created successfully.");
});
إذا لم يحدث خطأ، فستظهر الرسالة The file is created successfully في وحدة التحكم. وسيُنشأ ملف جديد باسم "newfile.txt" ، ويكون محتواه "Hello there".
fs.writeFile()
العامل fs.writeFile(file, data, options, callback) تكتب بيانات في ملف، وتستقبل «اسم الملف», «البيانات المراد إضافتها إلى الملف»، والخيارات {encoding: "utf8"}، ودالة رد نداء تستقبل المعامل err عند حدوث خطأ.
التمرين 11: أنشئ ملفًا جديدًا وسمّه "hello.txt". أضف "I salute and welcome each and every one of you. YAY!".
const fs = require('fs');
const path = require('path');
fs.writeFile(path.join(__dirname, 'hello.txt'), "I salute and welcome each and every one of you. YAY!", {encoding: "utf-8"}, (err) => {
if (err) throw err;
console.log("The file is created successfully.");
});
إذا لم يحدث خطأ، فستظهر الرسالة The file is created succesfully في وحدة التحكم. وسيُنشأ ملف جديد باسم "hello.txt" ، ويكون محتواه "HI salute and welcome each and every one of you. YAY".
fs.unlink()¶
التمرين 12: احذف newfile.txt الذي أُنشئ في التمرين 10. تلميح: استخدم fs.unlink() .
const fs = require('fs');
const path = require('path');
fs.unlink(path.join(__dirname, 'newfile.txt'), (err) => {
if (err) throw err;
console.log("The file is deleted successfully.");
});
إذا لم يحدث خطأ، فإن الملف "newfile.txt" سيُحذف.
fs.unlink()
الطريقة fs.unlink(file, (err) => {}) تحذف الملف المحدّد باسمه، وتستقبل «اسم الملف» و «دالة رد نداء» كمعاملات. تستقبل دالة رد النداء المعامل err عند حدوث خطأ.
التمرين 13: احذف hello.txt الذي أُنشئ في التمرين 11.
const fs = require('fs');
const path = require('path');
fs.unlink(path.join(__dirname, 'hello.txt'), (err) => {
if (err) throw err;
console.log("The file is deleted successfully.");
});
إذا لم يحدث خطأ، فإن الملف "hello.txt" سيُحذف.
مشروعات صغيرة¶
المشروع 1¶
التمرين 14: أنشئ بنية المجلدات التالية باستخدام Node.js.
./
├─ public/
│ ├─ css/
│ │ ├─ style.css
│ ├─ scripts/
│ │ ├─ script.js
│ ├─ index.html
const fs = require('fs');
const path = require('path');
fs.mkdir(path.join(__dirname, "public"), (err) => {
if (err) throw err;
console.log("The directory public has been created");
});
fs.mkdir(path.join(__dirname, "public", "css"), (err) => {
if (err) throw err;
console.log("The directory css has been created");
});
fs.mkdir(path.join(__dirname, "public", "scripts"), (err) => {
if (err) throw err;
console.log("The directory scripts has been created");
});
fs.writeFile(path.join(__dirname, "public/css", "style.css"), "", (err) => {
if (err) throw err;
console.log("The file style.css has been created");
});
fs.writeFile(path.join(__dirname, "public/scripts", "script.js"), "", (err) => {
if (err) throw err;
console.log("The file script.js has been created");
});
المشروع 2¶
التمرين 15: أنشئ ملفًا بسيطًا باستخدام Node.js خادمًا. اعرض ملف "index.html" التالي في المتصفح.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>my website</title>
</head>
<body>
<h1>welcome to my website</h1>
</body>
</html>
const http = require("http");
const path = require("path");
const fs = require("fs");
const server = http.createServer((req, res) => {
fs.readFile(path.join(__dirname, "public/index.html"), "utf8", (err, content) => {
if (err) throw err;
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
});
});
server.listen(9000);