NodeJs fs模块 相关操作文件的常用方法三

fs.chmodSync(path, mode)

  • path <string> |  | 
  • mode <integer>

有关详细信息,参阅此 API 的异步版本的文档:fs.chmod()。 也可参阅 chmod(2)

fs.chown(path, uid, gid, callback)

  • path <string> |  | 
  • uid <integer>
  • gid <integer>
  • callback 
    • err 

异步地更改文件的所有者和群组。 除了可能的异常,完成回调没有其他参数。 也可参阅 chown(2)

fs.chownSync(path, uid, gid)

  • path <string> |  | 
  • uid <integer>
  • gid <integer>

同步地更改文件的所有者和群组。 返回 undefined。 这是 fs.chown() 的同步版本。 也可参阅 chown(2)

fs.close(fd, callback)

版本历史

  • fd <integer>
  • callback 
    • err 

异步的 close(2)。 除了可能的异常,完成回调没有其他参数。

fs.closeSync(fd)

  • fd <integer>

同步的 close(2)。返回 undefined

fs.constants

  • 返回包含文件系统操作常用常量的对象。 当前定义的特定常量在 FS 常量中描述。

    fs.copyFile(src, dest[, flags], callback)

    • src <string> |  |  要拷贝的源文件名。
    • dest <string> |  |  拷贝操作的目标文件名。
    • flags <number> 用于拷贝操作的修饰符。默认值: 0
    • callback 

    异步地将 src 拷贝到 dest。 默认情况下,如果 dest 已经存在,则覆盖它。 除了可能的异常,回调函数没有其他参数。 Node.js 不保证拷贝操作的原子性。 如果在打开目标文件用于写入后发生错误,则 Node.js 将尝试删除目标文件。 flags 是一个可选的整数,指定拷贝操作的行为。 可以创建由两个或更多个值按位或组成的掩码(比如 fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE)。

    • fs.constants.COPYFILE_EXCL - 如果 dest 已存在,则拷贝操作将失败。
    • fs.constants.COPYFILE_FICLONE - 拷贝操作将尝试创建写时拷贝(copy-on-write)链接。如果平台不支持写时拷贝,则使用后备的拷贝机制。
    • fs.constants.COPYFILE_FICLONE_FORCE - 拷贝操作将尝试创建写时拷贝链接。如果平台不支持写时拷贝,则拷贝操作将失败。
      1
      2
      3
      4
      5
      6
      7
      const fs = require('fs');

      // 默认情况下将创建或覆盖目标文件。
      fs.copyFile('源文件.txt', '目标文件.txt', (err) => {
      if (err) throw err;
      console.log('源文件已拷贝到目标文件');
      });

    如果第三个参数是数字,则它指定 flags:

    1
    2
    3
    4
    5
    const fs = require('fs');
    const { COPYFILE_EXCL } = fs.constants;

    // 通过使用 COPYFILE_EXCL,如果目标文件存在,则操作将失败。
    fs.copyFile('源文件.txt', '目标文件.txt', COPYFILE_EXCL, callback);

    fs.copyFileSync(src, dest[, flags])

    • src <string> |  |  要拷贝的源文件名。
    • dest <string> |  |  拷贝操作的目标文件名。
    • flags <number> 用于拷贝操作的修饰符。默认值: 0

    同步地将 src 拷贝到 dest。 默认情况下,如果 dest 已经存在,则覆盖它。 返回 undefined。 Node.js 不保证拷贝操作的原子性。 如果在打开目标文件用于写入后发生错误,则 Node.js 将尝试删除目标文件。 flags 是一个可选的整数,指定拷贝操作的行为。 可以创建由两个或更多个值按位或组成的掩码(比如 fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE)。

    • fs.constants.COPYFILE_EXCL - 如果 dest 已存在,则拷贝操作将失败。
    • fs.constants.COPYFILE_FICLONE - 拷贝操作将尝试创建写时拷贝(copy-on-write)链接。如果平台不支持写时拷贝,则使用后备的拷贝机制。
    • fs.constants.COPYFILE_FICLONE_FORCE - 拷贝操作将尝试创建写时拷贝链接。如果平台不支持写时拷贝,则拷贝操作将失败。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      const fs = require('fs');

      // 默认情况下将创建或覆盖目标文件。
      fs.copyFileSync('源文件.txt', '目标文件.txt');
      console.log('源文件已拷贝到目标文件');
      ```

      如果第三个参数是数字,则它指定 `flags`:

      const fs = require('fs');
      const { COPYFILE_EXCL } = fs.constants;

      // 通过使用 COPYFILE_EXCL,如果目标文件存在,则操作将失败。
      fs.copyFileSync('源文件.txt', '目标文件.txt', COPYFILE_EXCL);


      fs.createReadStream(path[, options])
      -----------------------------------------------------------------------------------------------------------

      * `path` `<string>` | <Buffer> | <URL>
      * `options` `<string>` | <Object>
      * `flags` `<string>` 。默认值: `'r'`。
      * `encoding` `<string>` 默认值: `null`。
      * `fd` `<integer>` 默认值: `null`。
      * `mode` `<integer>` 默认值: `0o666`。
      * `autoClose` `<boolean>` 默认值: `true`。
      * `start` `<integer>`
      * `end` `<integer>` 默认值: `Infinity`。
      * `highWaterMark` [<](http://nodejs.cn/s/SXbo1v)integer[>](http://nodejs.cn/s/SXbo1v) 默认值: `64 * 1024`。
      * 返回: `<fs.ReadStream>` 参阅可读流。

      与可读流的 16 kb 的默认 `highWaterMark` 不同,此方法返回的流具有 64 kb 的默认 `highWaterMark`。 `options` 可以包括 `start` 和 `end` 值,以从文件中读取一定范围的字节而不是读取整个文件。 `start` 和 `end` 都包含在内并从 0 开始计数。 如果指定了 `fd` 并且 `start` 被省略或 `undefined`,则 `fs.createReadStream()` 从当前文件位置开始顺序读取。 `encoding` 可以是 [`Buffer`](http://nodejs.cn/s/FApxjh) 接受的任何一种字符编码。 如果指定了 `fd`,则 `ReadStream` 将忽略 `path` 参数并使用指定的文件描述符。 这意味着不会触发 `'open'` 事件。 `fd` 必须是阻塞的,非阻塞的 `fd` 应该传给 [`net.Socket`](http://nodejs.cn/s/wsJ1o1)。 如果 `fd` 指向仅支持阻塞读取的字符设备(例如键盘或声卡),则在数据可用之前,读取操作不会完成。 这可以防止进程退出并且流自然关闭。
      ```js
      const fs = require('fs');
      // 从某个字符设备创建一个流。
      const stream = fs.createReadStream('/dev/input/event0');
      setTimeout(() => {
      stream.close(); // 这可能不会关闭流。
      // 人工标记流末尾,就好像底层资源本身已指示文件结尾一样,允许流关闭。
      // 这不会取消挂起的读取操作,如果存在此类操作,则该过程可能仍无法成功退出,直到完成为止。
      stream.push(null);
      stream.read(0);
      }, 100);

    如果 autoClose 为 false,则即使出现错误,也不会关闭文件描述符。 应用程序负责关闭它并确保没有文件描述符泄漏。 如果 autoClose 设为 true(默认行为),则在 'error' 或 'end' 事件时将自动关闭文件描述符。 mode 用于设置文件模式(权限和粘滞位),但仅限于创建文件的情况。 示例,从一个大小为 100 字节的文件中读取最后 10 个字节:

    fs.createReadStream('sample.txt', { start: 90, end: 99 });
    

    如果 options 是字符串,则它指定字符编码。

    fs.createWriteStream(path[, options])

    • path <string> |  | 
    • options <string> | 
      • flags <string> 。默认值: 'w'
      • encoding <string> 默认值: 'utf8'
      • fd <integer> 默认值: null
      • mode <integer> 默认值: 0o666
      • autoClose <boolean> 默认值: true
      • start <integer>
    • 返回: <fs.WriteStream>
    • options 可以包括一个 start 选项,允许在文件开头之后的某个位置写入数据。 如果要修改文件而不是覆盖它,则 flags 模式需要为 r+ 模式而不是默认的 w 模式。 encoding 可以是 Buffer 接受的任何一种字符编码。 如果 autoClose 设置为 true(默认行为),则在 'error' 或 'finish' 事件时文件描述符会自动关闭。 如果 autoClose 为 false,则即使出现错误,也不会关闭文件描述符。 应用程序负责关闭它并确保没有文件描述符泄漏。 与 ReadStream 类似,如果指定了 fd,则 WriteStream 将忽略 path 参数并使用指定的文件描述符。 这意味着不会触发 'open' 事件。 fd 必须是阻塞的,非阻塞的 fd 应该传给 net.Socket。 如果 options 是字符串,则它指定字符编码。

      • 版权声明: 本博客所有文章,未经许可,任何单位及个人不得做营利性使用!转载请标明出处!如有侵权请联系作者。
      • Copyrights © 2015-2023 翟天野

      请我喝杯咖啡吧~