readFile
How does readFile
work?
Asynchronously reads the entire contents of a file.
If no encoding is specified (using options.encoding), the data is returned as a Buffer object. Otherwise, the data will be a string.
If options is a string, then it specifies the encoding.
When the path is a directory, the behavior of fsPromises.readFile()
is platform-specific. On macOS, Linux, and Windows, the promise will be rejected with an error. On FreeBSD, a representation of the directory's contents will be returned.
Usage
An example of reading a package.json
file located in the same directory of the running code:
import {readFile} from "universal-fs";
try {
const filePath = new URL("./package.json", import.meta.url);
const contents = await readFile(filePath, {encoding: "utf8"});
console.log(contents);
} catch (err) {
console.error(err.message);
}
It is possible to abort an ongoing readFile using an AbortSignal. If a request is aborted the promise returned is rejected with an AbortError:
import {readFile} from "universal-fs";
try {
const controller = new AbortController();
const {signal} = controller;
const promise = readFile(fileName, {signal});
// Abort the request before the promise settles.
controller.abort();
await promise;
} catch (err) {
// When a request is aborted - err is an AbortError
console.error(err);
}
Additional details
Aborting an ongoing request does not abort individual operating system requests but rather the internal buffering fs.readFile
performs.
Any specified FileHandle has to support reading.
- since universal-fs v1.0.0 | Node.js v10.0.0
- param path filename or FileHandle
- param options Read options
- return Fulfills with the contents of the file.