DEV Community

Discussion on: Node.js : Checking if a file or a directory exists

Collapse
 
senthilmpro profile image
Senthil Muthuvel • Edited

Doesn't fs has "fs.existsSync()" or fs.exists() already to do that? Why you want to use stats method?

Collapse
 
hunterkohler profile image
Hunter Kohler

Well, fs.exists() is now deprecated, and fs.existsSync() is synchronous, so you have to do something. If you only need to check if something exists fs.access() or fs.promises.access() is the way to go. The real reason to not use fs.exists() (or check if the file exists at all) is to avoid a race condition. It's much better to catch the error of a failed call to read or write to a file. Check out what the Node.JS documentation says about this under the fs.access() section

Do not use fs.access() to check for the accessibility of a file before calling fs.open(), fs.readFile() or fs.writeFile(). Doing so introduces a race condition, since other processes may change the file's state between the two calls. Instead, user code should open/read/write the file directly and handle the error raised if the file is not accessible.

Later:

In general, check for the accessibility of a file only if the file will not be used directly, for example when its accessibility is a signal from another process.