文件系统fs
fs模块是文件操作的封装,它提供了文件的读取、写入、更名、删除、遍历目录、链接等POSIX(注:可移植操作系统接口:Portable Operating System Interface ,缩写为 POSIX )文件系统操作。
fs模块中所有的操作都提供了异步(Asyn)和同步(Syn)的两个版本,例如读取文件内容的有异步的fs.readFile()和同步的fs.readFileSync()。
1. fs.readFile(filename , [encoding], [callback(err,data)])是最简单的读取文件的函数。
filename : 要读取的文件名。
encoding:文件的字符编码。
callback : 回调函数,用于接收文件的内容。接收两个参数err, 和data ,err表示有没有错误发生,data是文件内容。如果指定了encoding,data是一个解析后的字符串,
否则data将会是以Buffer形式表示的二进制数据。
如果能够正常读取file,则err是null
提示: Node.js的异步编程接口习惯是以函数的最后一个参数作为回调函数,通常一个函数只有一个回调函数。回调函数是实际参数中的第一个err,其余的参数是其他返回的内容,
如果没有发生错误,err值会是null或是undefined。如果有发生错误,err通常是Error对象的实例。
提示: 与同步I/O函数不同,Node.js中异步函数大多没有返回值。
2.fs.open(path , flags, [mode], [callback(err,fd)])是POSIX中open函数的封装。
path: 文件的路径(建议是相对路径,便于移植)
flags:
r : 以只读方式打开文件。
r+ : 以读写方式打开文件。
w: 以写入模式打开文件,如果文件不存在则创建。
w+ : 以读写模式打开文件,如果文件不存在就创建。
a: 以追加模式打开文件,如果不存在则创建。
a+ : 以读取追加模式打开文件,如果文件不存在则创建。
mode :用于创建文件时指定权限,默认是0666。回调函数将会传递一个文件描述符fd。
注:
(1)指定权限0666: 文件权限指的是POSIX操作系统中对文件读取和访问权限的规范,通常用一个八进制来表示。
例如0754 表示的是: 文件所有者的权限是7( 读、写、执行:0111),同组的用户的权限是5(读、执行0101),其他用户的权限是4(读 0100)。
则: 0666 :文件所有者,同组用户和其他用户的权限都是6( 读、写0110).
(2)文件描述符是一个非负整数,表示操作系统内核为当前进程所维护的打开文件的记录表的索引。
3.fs.read(fd,buffer,offset,length, position,[callback(err,bytesRead,buffer)])是POSIXread函数的封装,相比fs.readFile提供了更底层的接口、
fs.read的功能是从指定的文件描述符fd中读取数据并写入buffer指向的缓冲区对象。
offset是buffer的写入偏移量。
length : 是要从文件中读取的字节数。
position: 文件读取的起始位置,如果position的值是null,则会从文件指针的位置读取。
bytesRead表示读取的字节数。
buffer :表示缓冲区对象。
一般来说,除非必要,一般都不要使用fs.read方式读取文件,因为他会要求你手动管理缓冲区和文件指针,尤其是在你不知道文件大小的时候,这将会一件很麻烦的事情。
4.fs.writeFile(filename,data,[encoding],[callback(err)])
如果filename文件不存在,则会创建该文件并写入内容data。如果filename文件已经存在,则data会覆盖原先的内容,相当于重写!