Nocturnally Psychologizing Millipede
Meet npm Pro: unlimited public & private packages + package-based permissions.Learn more »

fildes

3.1.0 • Public • Published

fildes

NPM Version MIT

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

Build Status Build Status Build Status Coverage Status Dependencies

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 and write, see fildes/issues/1
  • creates a directories if flag is w, w+, a or a+
  • 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 calling fs.open(). Doing so introduces a race condition since other processes may change the file's state between the two calls. Instead, user code should call fs.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

Examples

Install

npm i fildes

DownloadsWeekly Downloads

447

Version

3.1.0

License

MIT

Unpacked Size

92.7 kB

Total Files

80

Last publish

Collaborators

  • avatar