by npm

npm / fstream

Advanced FS Streaming for Node

204 Stars 50 Forks Last release: Not found ISC License 223 Commits 46 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Like FS streams, but with stat on them, and supporting directories and symbolic links, as well as normal files. Also, you can use this to set the stats on a file, even if you don't change its contents, or to create a symlink, etc.

So, for example, you can "write" a directory, and it'll call

. You can specify a uid and gid, and it'll call
. You can specify a
, and it'll call
. You can call it a symlink and provide a
and it'll call

Note that it won't automatically resolve symbolic links. So, if you call

then you'll get an object that stats and then ends immediately (since it has no data). To follow symbolic links, do this:
fstream.Reader({path:'/some/symlink', follow:
true })

There are various checks to make sure that the bytes emitted are the same as the intended size, if the size is set.


  .Writer({ path: "path/to/file"
          , mode: 0755
          , size: 6

This will create the directories if they're missing, and then write

into the file, chmod it to 0755, and assert that 6 bytes have been written when it's done.
  .Writer({ path: "path/to/file"
          , mode: 0755
          , size: 6
          , flags: "a"

You can pass flags in, if you want to append to a file.

  .Writer({ path: "path/to/symlink"
          , linkpath: "./file"
          , SymbolicLink: true
          , mode: "0755" // octal strings supported

If isSymbolicLink is a function, it'll be called, and if it returns true, then it'll treat it as a symlink. If it's not a function, then any truish value will make a symlink, or you can set

, which does the same thing.

Note that the linkpath is relative to the symbolic link location, not the parent dir or cwd.


This will do like

cp -Rp path/to/dir path/to/other/dir
. If the other dir exists and isn't a directory, then it'll emit an error. It'll also set the uid, gid, mode, etc. to be identical. In this way, it's more like
rsync -a
than simply a copy.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.