fstream

Advanced FS Streaming for Node

  • Owner: npm/fstream
  • Platform:
  • License:: ISC License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

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 mkdir. You
can specify a uid and gid, and it'll call chown. You can specify a
mtime and atime, and it'll call utimes. You can call it a symlink
and provide a linkpath and it'll call symlink.

Note that it won't automatically resolve symbolic links. So, if you
call fstream.Reader('/some/symlink') 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.

Examples

fstream
  .Writer({ path: "path/to/file"
          , mode: 0755
          , size: 6
          })
  .write("hello\n")
  .end()

This will create the directories if they're missing, and then write
hello\n into the file, chmod it to 0755, and assert that 6 bytes have
been written when it's done.

fstream
  .Writer({ path: "path/to/file"
          , mode: 0755
          , size: 6
          , flags: "a"
          })
  .write("hello\n")
  .end()

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

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

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 type: 'SymbolicLink', which does the same thing.

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

fstream
  .Reader("path/to/dir")
  .pipe(fstream.Writer("path/to/other/dir"))

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.

Main metrics

Overview
Name With Ownernpm/fstream
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 1)
Platform
License:ISC License
所有者活动
Created At2011-10-29 21:36:05
Pushed At2021-06-16 23:40:29
Last Commit At2020-02-17 21:22:04
Release Count46
Last Release Namev1.0.12 (Posted on 2019-05-14 17:38:02)
First Release Name0.0.1 (Posted on 2011-11-07 17:36:20)
用户参与
Stargazers Count209
Watchers Count32
Fork Count42
Commits Count224
Has Issues Enabled
Issues Count40
Issue Open Count25
Pull Requests Count4
Pull Requests Open Count8
Pull Requests Close Count18
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private