# Write File > Write data to a file.
## Usage ```javascript var writeFile = require( '@stdlib/fs/write-file' ); ``` #### writeFile( file, data\[, options], clbk ) Asynchronously write `data` to a `file`. ```javascript var join = require( 'path' ).join; var fpath = join( __dirname, 'examples', 'fixtures', 'file.txt' ); writeFile( fpath, 'beep boop\n', onWrite ); function onWrite( error ) { if ( error ) { throw error; } } ``` The `data` argument may be either a `string` or a [`Buffer`][@stdlib/buffer/ctor]. ```javascript var join = require( 'path' ).join; var string2buffer = require( '@stdlib/buffer/from-string' ); var fpath = join( __dirname, 'examples', 'fixtures', 'file.txt' ); writeFile( fpath, string2buffer( 'beep boop\n' ), onWrite ); function onWrite( error ) { if ( error ) { throw error; } } ``` The function accepts the same `options` and has the same defaults as [`fs.writeFile()`][node-fs]. #### writeFile.sync( file, data\[, options] ) Synchronously writes `data` to a `file`. ```javascript var join = require( 'path' ).join; var fpath = join( __dirname, 'examples', 'fixtures', 'file.txt' ); var err = writeFile.sync( fpath, 'beep boop\n' ); if ( err instanceof Error ) { throw err; } ``` The function accepts the same `options` and has the same defaults as [`fs.writeFileSync()`][node-fs].
## Notes - The difference between this `writeFile.sync` and [`fs.writeFileSync()`][node-fs] is that [`fs.writeFileSync()`][node-fs] 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 ```javascript var fs = require( 'fs' ); // Check for directory path existence to prevent an error being thrown... if ( fs.existsSync( '/path/to' ) ) { fs.writeFileSync( '/path/to/file.txt', 'beep boop\n' ); } ``` can be replaced by an approach which addresses existence via `error` handling. ```javascript var writeFile = require( '@stdlib/fs/write-file' ); // Explicitly handle the error... var err = writeFile.sync( '/path/to/file.txt', 'beep boop\n' ); if ( err instanceof Error ) { // You choose what to do... throw err; } ```
## Examples ```javascript var join = require( 'path' ).join; var writeFile = require( '@stdlib/fs/write-file' ); var fpath = join( __dirname, 'examples', 'fixtures', 'file.txt' ); // Synchronously write data to a file: var err = writeFile.sync( fpath, 'beep boop\n', 'utf8' ); // returns null console.log( err instanceof Error ); // => false // Asynchronously write data to a file: writeFile( fpath, 'beep boop\n', onWrite ); function onWrite( error ) { if ( error ) { console.error( 'Error: %s', error.message ); } console.log( 'Success!' ); } ```
* * *
## CLI
### Usage ```text Usage: write-file [options] Options: -h, --help Print this message. -V, --version Print the package version. --enc, --encoding encoding Encoding. Default: 'utf8'. --flag flag Flag. Default: 'r'. --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][standard-stream] pipeline.
### Examples ```bash $ printf 'beep boop\n' | write-file ./examples/fixtures/file.txt ```