Node -- fs(常用方法)

1,308 阅读5分钟

fs模块概述

文件flags

  • r : 以读取模式打开文件。如果文件不存在则发生异常。
  • r+ : 以读写模式打开文件。如果文件不存在则发生异常。
  • rs+ : 以同步读写模式打开文件。命令操作系统绕过本地文件系统缓存。 这对 NFS 挂载模式下打开文件很有用,因为它可以让你跳过潜在的旧本地缓存。 它对 I/O 的性能有明显的影响,所以除非需要,否则不要使用此标志。
  • w : 以写入模式打开文件。文件会被创建(如果文件不存在)或截断(如果文件存在)。
  • wx : 类似 w,但如果 path 存在,则失败。
  • w+ : 以读写模式打开文件。文件会被创建(如果文件不存在)或截断(如果文件存在)。
  • wx+ : 类似 w+,但如果 path 存在,则失败。
  • a : 以追加模式打开文件。如果文件不存在,则会被创建。
  • ax : 类似于 a,但如果 path 存在,则失败。
  • a+ : 以读取和追加模式打开文件。如果文件不存在,则会被创建。
  • ax+ : 类似于 a+,但如果 path 存在,则失败。

文件流

fs.createReadStream(path[, options])

options <string> | <Object>
    flags <string>
    encoding <string>
    fd <integer>
    mode <integer>
    autoClose <boolean>
    start <integer>
    end <integer>
    highWaterMark <integer>

fs.createWriteStream(path[, options])

options <string> | <Object>
    flags <string>
    encoding <string>
    fd <integer>
    mode <integer>
    autoClose <boolean>
    start <integer>

开关

fs.open(path[, flags[, mode]], callback(err,fd))

fs.close(fd, callback(err))

fs.read(fd, buffer, offset, length, position, callback(err,bytesRead,buffer ))

    buffer 是数据将写入的缓冲区。
    offset 是 buffer 中开始写入的偏移量。
    length 是一个整数,指定要读取的字节数。
    position 参数指定从文件中开始读取的位置。 如果 position 为 null,则从当前文件位置读取数据,并更新文件位置。 如果 position 是整数,则文件位置将保持不变。

fs.readFile(path[, options], callback(err,data))

读取文件一定要设置编码,默认是 ”buffer“ 形式出现
options <Object> | <string>
    encoding <string> | <null> 默认值: null。
    flag <string> 参阅支持的文件系统标志。默认值: 'r'。

fs.readdir(path[, options], callback(err,files))

  *  options <string> | <Object>
      *  encoding <string> 默认值: 'utf8'。
      *  withFileTypes <boolean> 默认值: false。

fs.readlink(path[, options], callback(err,linkString))

找出软连接指向的真实路径
options <string> | <Object>\
    encoding <string> 默认值: 'utf8'。

fs.write(fd, string[, position[, encoding]], callback(err,written,string))

fs.write(fd, string[, position[, encoding]], callback(err,written,string))

offset 决定 buffer 中要被写入的部位,
length 是一个整数,指定要写入的字节数。
position 指定文件开头的偏移量(数据应该被写入的位置)

fs.writeFile(file, data[, options], callback)

当 file 是一个文件名时,异步地将数据写入到一个文件,如果文件已存在则覆盖该文件
当 file 是一个文件描述符时,行为类似于直接调用 fs.write()

fs.appendFile(file, data[, options], callback):

异步地追加数据到一个文件,如果文件不存在则创建文件。
options <Object> | <string></string>                   
    encoding <string> | <null> 默认值: 'utf8'。
    mode <integer> 默认值: 0o666。
    flag <string> 参阅支持的文件系统标志。默认值: 'w'。

fs.fsync(fd, callback)

将内存中数据写入文件;--刷新内存缓冲区

创建、移动、复制、删除

fs.mkdir(path[, options], callback(err))

options <Object> | <integer>
    * recursive <boolean> 默认值: false。递归创建
    * mode <integer> Windows 上不支持。默认值: 0o777。

fs.mkdtemp(prefix[, options], callback(err, folder))

创建一个唯一的临时目录。

fs.rmdir(path, callback(err))

该方法可以用于删除一个空目录。该传入的目录路径当中的目录必须能为一个空目录

fs.link(existingPath, newPath, callback(err))

fs.symlink(target, path[, type], callback(err))

创建符号链接

fs.unlink(path, callback)`:该方法可用于完成指定文件的删除

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

默认情况下,如果 dest 已经存在,则覆盖它。
flags
    fs.constants.COPYFILE_EXCL - 如果 dest 已存在,则拷贝操作将失败。
    fs.constants.COPYFILE_FICLONE - 拷贝操作将尝试创建写时拷贝(copy-on-write)链接。如果平台不支持写时拷贝,则使用后备的拷贝机制。
    fs.constants.COPYFILE_FICLONE_FORCE - 拷贝操作将尝试创建写时拷贝链接。如果平台不支持写时拷贝,则拷贝操作将失败。

fs.rename(oldPath, newPath, callback(err))

该方法可用于移动或重命名指定文件

fs.truncate(path[, len], callback)

fs.ftruncate(fd[, len], callback(err))`:

如果文件描述符指向的文件大于 len 个字节,则只有前面 len 个字节会保留在文件中。
如果文件小于 len 个字节,则会对其进行扩展,并且扩展部分将填充空字节('\0'):

获取文件信息

fs.stat(path[, options], callback(err,stats))

fs.lstat(path[, options], callback(err,stats))

获取文件信息(不解析符号链接)

fs.fstat(fd[, options], callback(err,stats))

返回文件详细信息

fs.existsSync(path)

通过检查文件系统来测试给定的路径是否存在

fs.access(path[, mode], callback(err))

测试 path 指定的文件或目录的用户权限。
mode <integer>
    fs.constants.F_OK - path 文件对调用进程可见。  如果没指定 mode,则默认为该值。
    fs.constants.R_OK - path 文件可被调用进程读取。
    fs.constants.W_OK - path 文件可被调用进程写入。
    fs.constants.X_OK - path 文件可被调用进程执行。

修改文件权限、信息

fs.utimes(path, atime, mtime, callback)

改变 path 所指向的对象的文件系统时间戳。

fs.futimes(fd, atime, mtime, callback)

改变由所提供的文件描述符所指向的对象的文件系统时间戳

fs.fchmod(fd, mode, callback)

fs.chmod(path, mode, callback)

异步地改变文件的权限。

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

异步地改变文件的所有者和群组。

fs.fchown(fd, uid, gid, callback)

其他

fs.realpath(path[, options], callback(err,resolvedPath ))

真实路径

fs.fdatasync(fd, callback)

刷新

fs.lchmod(path, mode, callback)

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