Open

Open a file.

Usage

var open = require( '@stdlib/fs/open' );

open( path[, flags[, mode]], clbk )

Asynchronously opens a file.

var closeSync = require( '@stdlib/fs/close' ).sync;

open( __filename, onOpen );

function onOpen( error, fd ) {
    if ( error ) {
        console.error( error.message );
    } else {
        closeSync( fd );
    }
}

The function has the same default parameter values as fs.open().

open.sync( file[, flags[, mode]] )

Synchronously opens a file.

var closeSync = require( '@stdlib/fs/close' ).sync;

var fd = open.sync( __filename );
if ( fd instanceof Error ) {
    console.error( fd.message );
} else {
    closeSync( fd );
}

The function has the same default parameters as fs.openSync().

Notes

  • The difference between this API and fs.openSync() is that fs.openSync() will throw if an error is encountered (e.g., if given a non-existent path) and this API will return an error. Hence, the following anti-pattern

    var fs = require( 'fs' );
    
    var fpath = '/path/to/file.js';
    var fd;
    
    // Check for existence to prevent an error being thrown...
    if ( fs.existsSync( fpath ) ) {
        fd = fs.readFileSync( fpath );
    }
    

    can be replaced by an approach which addresses existence via error handling.

    var open = require( '@stdlib/fs/open' );
    
    var fpath = '/path/to/file.js';
    
    // Explicitly handle the error...
    var fd = open.sync( fpath );
    if ( fd instanceof Error ) {
        // You choose what to do...
        console.error( fd.message );
    }
    

Examples

var join = require( 'path' ).join;
var closeSync = require( '@stdlib/fs/close' ).sync;
var open = require( '@stdlib/fs/open' );

/* Sync */

var fd = open.sync( join( __dirname, 'package.json' ), 'r+' );
// returns <number>

if ( fd instanceof Error ) {
    console.error( fd.message );
} else {
    closeSync( fd );
}

fd = open.sync( 'beepboop' );
// returns <Error>

/* Async */

open( join( __dirname, 'package.json' ), onOpen );
open( 'beepboop', onOpen );

function onOpen( error, fd ) {
    if ( error ) {
        if ( error.code === 'ENOENT' ) {
            console.error( 'File does not exist.' );
        } else {
            console.error( error.message );
        }
    } else {
        closeSync( fd );
    }
}
Did you find this page helpful?