fs模块概述异步方法的最后一个参数都是一个回调函数。 传给回调函数的参数取决于具体方法,但回调函数的第一个参数都会保留给异常。 如果操作成功完成,则第一个参数会是 null 或 undefined。
一、fs.FSWatcher 类
从 fs.watch()
返回的对象是该类型。
事件
-
change:当一个被监视的目录或文件有变化时触发
-
error:当发生错误时触发。
方法
- watcher.close():停止监听 fs.FSWatcher 的变化。
二、fs.ReadStream 类
ReadStream
是一个可读流
事件
-
close:当 ReadStream 底层的文件描述符被关闭时触发。
-
open:当 ReadStream 的文件被打开时触发。事件回调函数第一个参数为fd
-
error:当发生错误时触发。
属性
-
readStream.bytesRead:已读取的字节数。
-
readStream.path:流正在读取的文件的路径,指定在 fs.createReadStream() 的第一个参数。
三、fs.WriteStream 类
WriteStream
一个可写流。
事件
-
close:当 WriteStream 底层的文件描述符被关闭时触发。
-
open:当 WriteStream 的文件被打开时触发。事件回调函数第一个参数为fd
属性
-
writeStream.bytesWritten:已写入的字节数。。
-
writeStream.path:流正在写入的文件的路径,指定在 fs.createWriteStream() 的第一个参数。
文件流
-
fs.createReadStream(path[, options]):返回一个新建的
ReadStream
对象
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.Stats 类
从 fs.stat()
、fs.lstat()
和 fs.fstat()
及其同步版本返回的对象都是该类型。
Stats {
dev: 2114,
ino: 48064969,
mode: 33188,
nlink: 1,
uid: 85,
gid: 100,
rdev: 0,
size: 527,
blksize: 4096,
blocks: 8,
atimeMs: 1318289051000.1,
mtimeMs: 1318289051000.1,
ctimeMs: 1318289051000.1,
birthtimeMs: 1318289051000.1,
atime: 'Mon, 10 Oct 2011 23:24:11 GMT',
mtime: 'Mon, 10 Oct 2011 23:24:11 GMT',
ctime: 'Mon, 10 Oct 2011 23:24:11 GMT',
birthtime: 'Mon, 10 Oct 2011 23: 24: 11 GMT'
}
方法
- isBlockDevice():
- isCharacterDevice():
- isDirectory():
- isFIFO():
- isFile():
- isSocket():
- isSymbolicLink():
属性
- dev:
- ino:
- mode:
- nlink:
- uid:
- gid:
- rdev:
- size:
- blksize:
- blocks:
- atimeMs:
- mtimeMs:
- ctimeMs:
- birthtimeMs:
- atime:访问时间" - 文件数据最近被访问的时间。
- mtime:修改时间" - 文件数据最近被修改的时间。
- ctime:变化时间" - 文件状态最近被改变的时间(修改索引节点数据)。
- birthtime:创建时间" - 文件创建的时间。
五、fs方法
获取文件信息
-
fs.stat(path, callback):该方法用于检测文件的状态,可以借此来判断某个文件是否存在,callback回调函数有两个参数err和stats。其中err为错误信息参数,stats为一个文件状态对象。
-
fs.lstat(path, callback):获取文件信息(不解析符号链接)
-
fs.fstat(fd, callback):返回文件详细信息
-
fs.existsSync(path):通过检查文件系统来测试给定的路径是否存在
-
fs.access(path[, mode], callback):测试 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.chmod(path, mode, callback):异步地改变文件的权限。
-
fs.chown(path, uid, gid, callback):异步地改变文件的所有者和群组。
文件增删改查
-
fs.appendFile(file, data[, options], callback):异步地追加数据到一个文件,如果文件不存在则创建文件。
-
fs.writeFile(file, data[, options], callback):该方法可用于往指定文件当中写入内容,该内容会覆盖文件当中原有的内容。options参数可选,可以传入编码格式,
options <Object> | <string>
encoding <string> | <null> 默认为 'utf8'
mode <integer> 默认为 0o666
flag <string> 默认为 'a'
-
fs.link(existingPath, newPath, callback):
-
fs.unlink(path, callback):该方法可用于完成指定文件的删除
-
fs.readFile(path[, options], callback):该方法用于读取指定文件当中的内容,
options
encoding
、flag
,读取文件一定要设置编码,否则默认是 ”buffer“ 形式出现 -
fs.rename(oldPath, newPath, callback):该方法可用于移动或重命名指定文件
-
fs.mkdir(path[, mode], callback):异步地创建目录,该方法不能完成多级目录的创建,node当中要求要创建的那个文件夹所在的文件夹必须能都存在。
-
fs.rmdir(path, callback):该方法可以用于删除一个空目录。该传入的目录路径当中的目录必须能为一个空目录,
-
fs.readdir(path[, options], callback):该方法可以用于读取一个指定目录当中的信息。callback回调函数当中有两个参数err和files
-
fs.open(path, flags[, mode], callback):callback 打开文件后回调函数,参数默认第一个err,第二个fd
flags
'r' - 以读取模式打开文件。如果文件不存在则发生异常。
'r+' - 以读写模式打开文件。如果文件不存在则发生异常。
'rs+' - 以同步读写模式打开文件。命令操作系统绕过本地文件系统缓存。
这对 NFS 挂载模式下打开文件很有用,因为它可以让你跳过潜在的旧本地缓存。 它对 I/O 的性能有明显的影响,所以除非需要,否则不要使用此标志。
'w' - 以写入模式打开文件。文件会被创建(如果文件不存在)或截断(如果文件存在)。
'wx' - 类似 'w',但如果 path 存在,则失败。
'w+' - 以读写模式打开文件。文件会被创建(如果文件不存在)或截断(如果文件存在)。
'wx+' - 类似 'w+',但如果 path 存在,则失败。
'a' - 以追加模式打开文件。如果文件不存在,则会被创建。
'ax' - 类似于 'a',但如果 path 存在,则失败。
'a+' - 以读取和追加模式打开文件。如果文件不存在,则会被创建。
'ax+' - 类似于 'a+',但如果 path 存在,则失败。
mode 可设置文件模式(权限和 sticky 位),但只有当文件被创建时才有效。默认为 0o666,可读写。
-
fs.read(fd, buffer, offset, length, position, callback):
-
fs.write(fd, buffer[, offset[, length[, position]]], callback):
-
fs.fsync(fd, callback):将内存中数据写入文件;--刷新内存缓冲区;
-
fs.close(fd, callback):
-
fs.copyFile(src, dest[, flags], callback):异步的将 src 拷贝到 dest
监听文件
-
fs.watch(filename[, options][, listener]):监视
filename
的变化,filename
可以是一个文件或一个目录。 返回的对象是一个fs.FSWatcher
。
用watcher.close()停止监听
options <string> | <Object>
persistent <boolean> 指明如果文件正在被监视,进程是否应该继续运行。默认 = true
recursive <boolean> 指明是否全部子目录应该被监视,或只是当前目录。 默认 = false
encoding <string> 指定用于传给监听器的文件名的字符编码。默认 = 'utf8'
listener <Function> | <undefined> Default: undefined
eventType <string>
filename <string> | <Buffer>
- fs.watchFile(filename[, options], listener):监视 filename 的变化。 回调 listener 会在每次访问文件时被调用。
[options]
persistent true表示持续监视,不退出程序;
interval 单位毫秒,表示每隔多少毫秒监视一次文件
[ listener]
curr为一个fs.Stat对象,被修改后文件,
prev,一个fs.Stat对象,表示修改前对象
- fs.unwatchFile(filename[, listener]):
其他
-
fs.futimes(fd, atime, mtime, callback):改变由所提供的文件描述符所指向的对象的文件系统时间戳
-
fs.readlink(path[, options], callback):
-
fs.realpath(path[, options], callback):
-
fs.fchmod(fd, mode, callback):
-
fs.fchown(fd, uid, gid, callback):
-
fs.fdatasync(fd, callback):
- fs.ftruncate(fd[, len], callback):如果文件描述符指向的文件大于 len 个字节,则只有前面 len 个字节会保留在文件中。
-
fs.lchmod(path, mode, callback):
-
fs.lchown(path, uid, gid, callback):
-
fs.mkdtemp(prefix[, options], callback):创建一个唯一的临时目录。
-
fs.symlink(target, path[, type], callback):
-
fs.truncate(path[, len], callback):
网友评论