Node.jsBeginner
Node.js File System (fs Module)
fs.readFile, writeFile, mkdir, unlink — Node.js দিয়ে ফাইল ও ফোল্ডার ম্যানেজমেন্ট বাংলায়।
18টি অংশবাংলা ভাষায়
fs (File System) module দিয়ে Node.js থেকে ফাইল ও ডিরেক্টরি পড়া, লেখা, মুছে ফেলা, rename করা — সব সম্ভব। এটি require('node:fs') দিয়ে ব্যবহার করা হয়।
Synchronous বনাম Asynchronous
| Type | Function | বৈশিষ্ট্য |
|---|---|---|
| Sync | readFileSync | কোড block হয়, পরের line আগে execute হয় না |
| Async | readFile | Non-blocking, callback বা promise দিয়ে result |
সুপারিশ
Production-এ সবসময় asynchronous version ব্যবহার করুন। Sync version single-threaded Node.js-কে block করে।
ফাইল পড়া (Read)
Async — readFilejavascript
javascript
const fs = require("node:fs");
// Callback style
fs.readFile("data.txt", "utf8", (err, data) => {
if (err) {
console.error("ফাইল পড়তে সমস্যা:", err);
return;
}
console.log("ফাইলের content:", data);
});Promise style (promises API)javascript
javascript
const fs = require("node:fs").promises;
async function readFile() {
try {
const data = await fs.readFile("data.txt", "utf8");
console.log(data);
} catch (error) {
console.error("ত্রুটি:", error.message);
}
}
readFile();ফাইল লেখা (Write)
const fs = require("node:fs").promises;
async function writeFile() {
// নতুন ফাইল তৈরি / পুরোনো overwrite
await fs.writeFile("output.txt", "Hello Node.js!", "utf8");
console.log("ফাইল লেখা হয়েছে!");
// append — শুধু যোগ করা
await fs.appendFile("output.txt", "\nনতুন লাইন", "utf8");
}
writeFile();ফোল্ডার তৈরি (mkdir)
const fs = require("node:fs").promises;
async function createFolders() {
// single folder
await fs.mkdir("uploads");
// nested folders (recursive)
await fs.mkdir("uploads/images/2024", { recursive: true });
}
createFolders();ফাইল/ফোল্ডার Delete (unlink, rm)
const fs = require("node:fs").promises;
async function deleteFiles() {
// ফাইল মুছে ফেলা
await fs.unlink("output.txt");
console.log("ফাইল মুছে ফেলা হয়েছে");
// ফোল্ডার মুছে ফেলা (recursive)
await fs.rm("uploads", { recursive: true, force: true });
console.log("ফোল্ডার মুছে ফেলা হয়েছে");
}
deleteFiles();ফাইল/ফোল্ডার Check ও Rename
const fs = require("node:fs").promises;
async function fileOperations() {
// ফাইল আছে কিনা দেখুন
try {
await fs.access("data.txt");
console.log("ফাইল আছে!");
} catch {
console.log("ফাইল নেই!");
}
// rename
await fs.rename("old.txt", "new.txt");
// stat — ফাইলের info
const stats = await fs.stat("package.json");
console.log("সাইজ:", stats.size, "bytes");
console.log("ধরন:", stats.isFile() ? "ফাইল" : "ফোল্ডার");
}
fileOperations();ডিরেক্টরি পড়া (readdir)
const fs = require("node:fs").promises;
async function listFiles() {
const files = await fs.readdir(".");
console.log("সব ফাইল:", files);
// nested files
const allFiles = await fs.readdir(".", {
recursive: true,
withFileTypes: true,
});
allFiles.forEach((item) => {
console.log(item.name, item.isDirectory() ? "📁" : "📄");
});
}
listFiles();সতর্কতা
বড় ফাইল (GB-এর পরিমাণ) readFile দিয়ে পড়বেন না — Streams ব্যবহার করুন। এতে memory leak হতে পারে।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।