fildes
v3.2.1
Published
promises fs and takes care about fs.open
Downloads
425
Maintainers
Readme
fildes
Provides native promises for all file system methods involving file descriptors (FD), basically manages fs.open
for you.
file descriptor (FD, less frequently fildes)
en.wikipedia.org/wiki/File_descriptor
Usage
fildes
always return a new Promise!
const { write } = require('fildes');
write('./path/to/file.txt', 'The quick green fix')
.then(() => console.log('done!'))
.catch(console.error);
Why?
- I needed an API that returns Promises
- provides smart defaults i.e. suitable flags for
open
,read
andwrite
, see fildes/issues/1 - creates a directories if flag is
w
,w+
,a
ora+
open
is optional and useful for keeping the fd for multiple operations- uses no magic
- some very popular node modules use
fs.exists()
which is deprecated…
fs.exists()
should not be used to check if a file exists before callingfs.open()
. Doing so introduces a race condition since other processes may change the file's state between the two calls. Instead, user code should callfs.open()
directly and handle the error raised if the file is non-existent.
fs.exists Stability: 0 - Deprecated (Node.js v5.1.0 File System API)
Bad (NOT RECOMMENDED)
fs.exists('myfile', (exists) => {
if (exists) {
console.error('myfile already exists');
} else {
fs.open('myfile', 'wx', (err, fd) => {
if (err) throw err;
fs.write(fd, 'Hello', callback);
});
}
});
Good (RECOMMENDED)
fs.open('myfile', 'wx', (err, fd) => {
if (err) {
if (err.code === 'EEXIST') {
console.error('myfile already exists');
return;
}
throw err;
}
fs.write(fd, 'Hello', callback);
});
Using fildes
const { open, write, close } = require('fildes');
open('myfile', { flag: 'wx' })
.then(fd => {
return write(fd, 'Hello')
.then(() => close(fd));
})
.catch(console.error);
This is the same as:
const { write } = require('fildes');
write('myfile', 'Hello', { flag: 'wx' })
.catch(console.error);
Install
npm i --save fildes
fildes
with support for Node.js 4.x can be found here https://github.com/thisconnect/fildes/tree/v1.x
API
- access
- appendFile
- chmod
- chown
- close
- link
- mkdir
- open
- read
- readdir
- readFile
- rename
- rm
- stats
- symlink
- sync
- truncate
- unlink
- utimes
- write
- writeFile