Append File

Append data to a file.

Usage

var appendFile = require( '@stdlib/fs/append-file' );

appendFile( file, data[, options], clbk )

Asynchronously appends data to a file.

var join = require( 'path' ).join;

var fpath = join( __dirname, 'examples', 'fixtures', 'file.txt' );

appendFile( fpath, 'beep boop\n', onAppend );

function onAppend( error ) {
    if ( error ) {
        console.log( error instanceof Error );
        // => false
    }
}

The data argument may be either a string or a Buffer.

var join = require( 'path' ).join;
var string2buffer = require( '@stdlib/buffer/from-string' );

var fpath = join( __dirname, 'examples', 'fixtures', 'file.txt' );

appendFile( fpath, string2buffer( 'beep boop\n' ), onAppend );

function onAppend( error ) {
    if ( error ) {
        console.log( error instanceof Error );
        // => false
    }
}

The function accepts the same options and has the same defaults as fs.appendFile().

appendFile.sync( file, data[, options] )

Synchronously appends data to a file.

var join = require( 'path' ).join;

var fpath = join( __dirname, 'examples', 'fixtures', 'file.txt' );

var err = appendFile.sync( fpath, 'beep boop\n' );
if ( err instanceof Error ) {
    throw err;
}

The function accepts the same options and has the same defaults as fs.appendFileSync().

Notes

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

    var fs = require( 'fs' );
    
    // Check for directory path existence to prevent an error being thrown...
    if ( fs.existsSync( '/path/to' ) ) {
        fs.appendFileSync( '/path/to/file.txt', 'beep boop\n' );
    }
    

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

    var appendFile = require( '@stdlib/fs/append-file' );
    
    // Explicitly handle the error...
    var err = appendFile.sync( '/path/to/file.txt', 'boop beep\n' );
    if ( err instanceof Error ) {
        // You choose what to do...
        throw err;
    }
    

Examples

var join = require( 'path' ).join;
var appendFile = require( '@stdlib/fs/append-file' );

var fpath = join( __dirname, 'examples', 'fixtures', 'file.txt' );

// Synchronously append data to a file:

var error = appendFile.sync( fpath, 'beep boop\n', 'utf8' );
// Function successfully executes and returns null

console.log( error instanceof Error );
// => false

// Asynchronously append data to a file:

appendFile( fpath, 'beep boop\n', onAppend );

function onAppend( error ) {
    if ( error ) {
        console.error( 'Error: %s', error.message );
    }
    console.log( 'Success!!!' );
}

CLI

Usage

Usage: append-file [options] <filepath>

Options:

  -h,    --help                Print this message.
  -V,    --version             Print the package version.
  --enc, --encoding encoding   Encoding. Default: 'utf8'.
         --flag flag           Flag. Default: 'a'.
         --mode mode           Mode. Default: 0o666.

Notes

  • Relative output file paths are resolved relative to the current working directory.
  • Errors are written to stderr.
  • File contents should be provided over stdin as part of a standard stream pipeline.

Examples

$ printf 'beep boop\n' | append-file ./examples/fixtures/file.txt
Did you find this page helpful?