Asynchronously
var fs = require('fs');
fs.stat('path/to/file', function(err) {
if (!err) {
console.log('file or directory exists');
}
else if (err.code === 'ENOENT') {
console.log('file or directory does not exist');
}
});
Synchronously
Here, we must wrap the function call in a try/catch block to handle error.
var fs = require('fs');
try {
fs.statSync('path/to/file');
console.log('file or directory exists');
}
catch (err) {
if (err.code === 'ENOENT') {
console.log('file or directory does not exist');
}
}
With all that being said, I highly recommend you keep learning!
Thank you for reading this article. Please feel free to connect with me on LinkedIn and Twitter.
Top comments (2)
Doesn't fs has "fs.existsSync()" or fs.exists() already to do that? Why you want to use stats method?
Well,
fs.exists()
is now deprecated, andfs.existsSync()
is synchronous, so you have to do something. If you only need to check if something existsfs.access()
orfs.promises.access()
is the way to go. The real reason to not usefs.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() sectionLater: