fs (File System) module in Node.js
In Node.js, you can read a file using the built-in fs
(File System) module. There are different ways to read files, depending on your use case:
1. Synchronous Reading (Blocking)
This method blocks the execution until the file is fully read. Suitable for scripts where blocking isn't an issue.
const fs = require('fs');
try {
const data = fs.readFileSync('file.txt', 'utf8'); // Specify the encoding if you want a string
console.log(data);
} catch (err) {
console.error('Error reading file:', err);
}
2. Asynchronous Reading (Non-Blocking)
This method is preferred for non-blocking, scalable applications.
const fs = require('fs');
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) {
console.error('Error reading file:', err);
return;
}
console.log(data);
});
3. Using Promises
If you prefer working with promises or async/await, you can use fs.promises
:
const fs = require('fs').promises;
async function readFile() {
try {
const data = await fs.readFile('file.txt', 'utf8');
console.log(data);
} catch (err) {
console.error('Error reading file:', err);
}
}
readFile();
4. Reading Large Files (Streaming)
If you're dealing with a large file, using streams is more memory-efficient:
const fs = require('fs');
const stream = fs.createReadStream('file.txt', { encoding: 'utf8' });
stream.on('data', chunk => {
console.log('Chunk received:', chunk);
});
stream.on('error', err => {
console.error('Error reading file:', err);
});
stream.on('end', () => {
console.log('File reading completed.');
});
Choose the Right Method
- Small files: Use
readFileSync
orreadFile
for simplicity. - Large files: Use streams to handle memory efficiently.
- Modern applications: Use promises (
fs.promises
) orasync/await
for clean and readable code.
댓글
댓글 쓰기