node.js(六 --- 文件系统模块fs)
node.js文件系统(fs模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的fs.readFile和同步的fs.readFileSync();异步的方法函数最后一个参数为回调函数,
回调函数的第一个参数包含错误信息(error)
打开文件
fs.open(path,flags,mode,callback): 其中path是指文件的路径; flags是指文件打开的行为; mode是设置文件模式(权限),文件创建默认权限为0666(可读可写); callback是回调函数,带有两个参数;
flags参数如下:
r:以读取模式打开文件;如果文件不存在抛出异常;
r+: 以读写模式打开文件,如果文件不存在抛出异常;
rs: 以同步的方式读取文件;
rs+: 以同步的方式读取和写入文件;
w: 以写入模式打开文件,如果文件不存在则创建;
wx: 类似w,但是如果文件路径存在,则文件写入失败;
w+: 以读写模式打开文件,如果文件不存在则创建;
wx+: 类似w,但是如果文件路径存在,则文件读写失败;
a: 以追加模式打开文件,如果文件不存在则创建;
ax: 类似a,但是如果文件路径存在,则文件追加失败;
a+: 以读取追加模式打开文件,如果文件不存在则创建;
ax+: 类似a,但是如果文件路径存在,则文件读取追加失败;
获取文件信息
fs.stat(path,callback): 其中,path表示文件路径; callback是指回调函数,有两个参数:(err,stats),其中stats是fs.stat对象;
stats类中的方法包括:
stats.isFile(): 如果是文件则返回true,否则返回false;
stats.isDirectiory(): 如果是目录则返回true,否则返回false;
stats.isBlockDevice(): 如果是块设备则返回true,否则返回false;
stats.isCharacterDevice(): 如果是字符设备返回true,否则返回false;
stats.isSymbolicLink(): 如果是软链接返回true,否则返回false;
stats.isFIFO(): 如果是FIFO,则返回true,否则返回false.FIFO是UNIX中的一种特殊类型的命令管道;
stats.isSocket(): 如果是Socket则返回true,否则返回false;
写入文件
fs.writeFile(file,data,options,callback): 直接打开文件默认是w模式,所以如果文件存在,该方法写入的内容会覆盖旧的文件内容;
其中参数file是文件名或者文件描述; data是要写入文件的数据,可以是string或buffer对象; options是一个对象,包含encoding,mode,flag;默认的编码格式为utf-8,模式为0666,flag为w; 回调函数只包含错误信息参数;
读取文件
fs.read(fd,buffer,offset,length,position,callback): 该方法使用了文件描述来读取文件;
参数fd的作用,通过fs.open()方法返回的文件描述符; buffer是数据写入的缓冲区; offset是缓冲区写入的写入偏移量; length是要从文件中读取的字节数; position表示文件读取的起始位置,如果position的值为null,则会从当前文件指针的位置读取。
关闭文件
fs.close(fd,callback): 该方法使用了文件描述符来读取文件; 其中,fd是通过fs.open()方法返回的文件描述符; callback回调函数没有参数
文件截取
fs.ftruncate(fd,len,callback): 该方法使用了文件描述符来读取文件。 其中:fd是通过fs.open()方法返回的文件描述符; len: 文件内容截取的长度; callback回调函数没有参数;
删除文件
fs.unlink(path,callback): 其中,path是文件的路径; callback回调函数没有参数;
创建目录
fs.mkdir(path,options,callback): 其中,path是指文件路径; options有两个值:recursive 和 mode,recursive表示是否以递归的方式创建目录,默认为false,mode是设置目录权限的,默认为0777; callback回到函数没有参数
读取目录
fs.readdir(path,callback): 其中,path是文件路径; callback回调函数,带有两个参数(err,file),err为错误信息,files为目录下的文件数组列表
删除目录
fs.rmdir(path,callback): 其中path是文件路径,callback是回调函数,没有参数