Reading files with Node.js
The simplest way to read a file in Node.js is to use the fs.readFile() method, passing it the file path, encoding and a callback function that will be called with the file data (and the error):
const = ('node:fs'); .('/Users/joe/test.txt', 'utf8', (, ) => { if () { .(); return; } .(); }); Alternatively, you can use the synchronous version fs.readFileSync():
const = ('node:fs'); try { const = .('/Users/joe/test.txt', 'utf8'); .(); } catch () { .(); } You can also use the promise-based fsPromises.readFile() method offered by the fs/promises module:
const = ('node:fs/promises'); async function () { try { const = await .('/Users/joe/test.txt', { : 'utf8' }); .(); } catch () { .(); } } (); All three of fs.readFile(), fs.readFileSync() and fsPromises.readFile() read the full content of the file in memory before returning the data.
This means that big files are going to have a major impact on your memory consumption and speed of execution of the program.
In this case, a better option is to read the file content using streams.
import from 'fs'; import { } from 'node:stream/promises'; import from 'path'; const = 'https://www.gutenberg.org/files/2701/2701-0.txt'; const = .(.(), 'moby.md'); async function (, ) { const = await (); if (!. || !.) { // consuming the response body is mandatory: https://undici.nodejs.org/#/?id=garbage-collection await .?.(); throw new (`Failed to fetch ${}. Status: ${.}`); } const = .(); .(`Downloading file from ${} to ${}`); await (., ); .('File downloaded successfully'); } async function () { const = .(, { : 'utf8' }); try { for await (const of ) { .('--- File chunk start ---'); .(); .('--- File chunk end ---'); } .('Finished reading the file.'); } catch () { .(`Error reading file: ${.message}`); } } try { await (, ); await (); } catch () { .(`Error: ${.message}`); }