Git Product home page Git Product logo

node-fs-ext's Introduction

fs-ext

Build Status Coverage Status Windows Status

Extras not included in Node's fs module.

Note:

  • From v2.0.0 onwards, module doesn't override fs and constants Node.js core modules. Instead import functions and constants directly:

    const {flock, constants} = require('fs-ext');
    // or
    const fsExt = require('fs-ext');
    // fsExt.flock
    // fsExt.constants
  • From v1.0.0 onwards, fs.utime and fs.utimeSync have been removed. Use fs.utimes and fs.utimesSync instead.

Installation

Install via npm:

npm install fs-ext

Usage

fs-ext imports all of the methods from the core 'fs' module, so you don't need two objects.

const fs = require('fs');
const {flock} = require('fs-ext');

const fd = fs.openSync('foo.txt', 'r');
flock(fd, 'ex', (err) => {
    if (err) {
        return console.error("Couldn't lock file");
    }
    // file is locked
});

For an advanced example checkout example.js.

API

flock(fd, flags, [callback])

Asynchronous flock(2). No arguments other than a possible error are passed to the callback. Flags can be 'sh', 'ex', 'shnb', 'exnb', 'un' and correspond to the various LOCK_SH, LOCK_EX, LOCK_SH|LOCK_NB, etc.

NOTE (from flock() man page): flock() does not lock files over NFS. Use fcntl(2) instead: that does work over NFS, given a sufficiently recent version of Linux and a server which supports locking.

flockSync(fd, flags)

Synchronous flock(2). Throws an exception on error.

fcntl(fd, cmd, [arg], [callback])

Asynchronous fcntl(2).

callback will be given two arguments (err, result).

The supported commands are:

  • 'getfd' ( F_GETFD )
  • 'setfd' ( F_SETFD )
  • 'setlk' ( F_SETLK )
  • 'getlk' ( F_GETLK )
  • 'setlkw' ( F_SETLKW )

Requiring this module adds FD_CLOEXEC to the constants module, for use with F_SETFD, and also F_RDLCK, F_WRLCK and F_UNLCK for use with F_SETLK (etc).

File locking can be used like so:

const {fnctl, constants} = require('fs-ext');

fcntl(fd, 'setlkw', constants.F_WRLCK, (err) => {
    if (!err) {
        // Lock succeeded
    }
});

fcntlSync(fd, flags)

Synchronous fcntl(2). Throws an exception on error.

seek(fd, offset, whence, [callback])

Asynchronous lseek(2).

callback will be given two arguments (err, currFilePos).

whence can be 0 (SEEK_SET) to set the new position in bytes to offset, 1 (SEEK_CUR) to set the new position to the current position plus offset bytes (can be negative), or 2 (SEEK_END) to set to the end of the file plus offset bytes (usually negative or zero to seek to the end of the file).

seekSync(fd, offset, whence)

Synchronous lseek(2). Throws an exception on error. Returns current file position.

node-fs-ext's People

Contributors

abetomo avatar adamansky avatar alessioalex avatar awick avatar bajtos avatar baudehlo avatar davedoesdev avatar ellacochran avatar ggreer avatar ikokostya avatar imyller avatar japj avatar mikesamuel avatar pnemade avatar rlidwka avatar saikirandaripelli avatar sam-github avatar timbertson avatar tshinnic avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.