# Read Directory > Read the contents of a directory.
## Usage ```javascript var readDir = require( '@stdlib/fs/read-dir' ); ``` #### readDir( path, clbk ) Asynchronously reads the contents of a directory. ```javascript readDir( __dirname, onRead ); function onRead( error, data ) { if ( error ) { console.error( error ); } else { console.log( data ); // => [...] } } ``` #### readDir.sync( path ) Synchronously reads the contents of a directory. ```javascript var out = readDir.sync( __dirname ); if ( out instanceof Error ) { throw out; } console.log( out ); // => [...] ```
## Notes - The difference between this module and [`fs.readdirSync()`][fs] is that [`fs.readdirSync()`][fs] will throw if an `error` is encountered (e.g., if given a non-existent `path`) and this module will return an `error`. Hence, the following anti-pattern ```javascript var fs = require( 'fs' ); var dir = '/path/to/dir'; // Check for existence to prevent an error being thrown... if ( fs.existsSync( dir ) ) { dir = fs.readdirSync( dir ); } ``` can be replaced by an approach which addresses existence via `error` handling. ```javascript var readDir = require( '@stdlib/fs/read-dir' ); var dir = '/path/to/dir'; // Explicitly handle the error... dir = readDir.sync( dir ); if ( dir instanceof Error ) { // You choose what to do... throw dir; } ```
## Examples ```javascript var readDir = require( '@stdlib/fs/read-dir' ); /* Sync */ var out = readDir.sync( __dirname ); // returns console.log( out instanceof Error ); // => false out = readDir.sync( 'beepboop' ); // returns console.log( out instanceof Error ); // => true /* Async */ readDir( __dirname, onRead ); readDir( 'beepboop', onRead ); function onRead( error, data ) { if ( error ) { if ( error.code === 'ENOENT' ) { console.error( 'Directory does not exist.' ); } else { throw error; } } else { console.log( data ); } } ```
* * *
## CLI
### Usage ```text Usage: read-dir [options] Options: -h, --help Print this message. -V, --version Print the package version. ```
### Notes - Relative paths are resolved relative to the current working directory. - Errors are written to `stderr`. - Directory contents are written to `stdout`.
### Examples ```bash $ read-dir ./../ ... ... ```