Node.js-এ fs মডিউল ব্যবহার করে এক্সটার্নাল টেক্সট ফাইল পড়ে তার ক্যারেক্টার সংখ্যা বের করা।
ফাইল স্ট্রাকচার
project/ ├── script.js └── data.txt
সমাধান
const fs = require('fs');
// সিনক্রোনাস (সহজ)
const countCharsSync = (filePath) => {
try {
const data = fs.readFileSync(filePath, 'utf-8');
return data.length;
} catch (err) {
console.error('Error reading file:', err.message);
return -1;
}
};
// অ্যাসিনক্রোনাস (প্রমিস ভিত্তিক)
const countCharsAsync = (filePath) => {
return new Promise((resolve, reject) => {
fs.readFile(filePath, 'utf-8', (err, data) => {
if (err) reject(err);
else resolve(data.length);
});
});
};
// অ্যাসিনক্রোনাস (async/await)
const countCharsAwait = async (filePath) => {
try {
const data = await fs.promises.readFile(filePath, 'utf-8');
return data.length;
} catch (err) {
console.error('Error:', err.message);
throw err;
}
};
// ব্যবহার
console.log(countCharsSync('./data.txt')); // 399
// অ্যাসিনক্রোনাস ব্যবহার
countCharsAwait('./data.txt')
.then(count => console.log('Async count:', count))
.catch(err => console.error(err));
মডিউল সিস্টেম (ES Modules)
// package.json-এ "type": "module" যোগ করুন
import fs from 'fs/promises';
const countChars = async (filePath) => {
const data = await fs.readFile(filePath, 'utf-8');
return data.length;
};
দ্রষ্টব্য
- utf-8: এনকোডিং স্পেসিফাই করা জরুরি
- Sync vs Async: সার্ভার এনভায়রনমেন্টে অ্যাসিনক্রোনাস পছন্দনীয়
- Error handling: ফাইল নেই, পারমিশন ইত্যাদি হ্যান্ডল করুন
উৎপাদন
399