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 thatfs.openSync()
will throw if anerror
is encountered (e.g., if given a non-existentpath
) and this API will return anerror
. Hence, the following anti-patternvar 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 );
}
}