#### # 一个文件的操作过程:
1. open
2. read / write
3. close
~~~
fs.open(path, flags[, mode], callback)
~~~
**path** - 文件的路径
**flags** - 文件打开的行为,具体值详见下文
**mode** - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。
**callback** - 回调函数,带有两个参数如:callback(err, fd)。
![](https://box.kancloud.cn/e322011ef92259f93aec2fbfa5af58ef_728x494.png)
~~~
fs.open('input.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("文件打开成功!");
});
~~~
* * * * *
~~~
fs.read(fd, buffer, offset, length, position, callback)
~~~
**fd** - 通过 fs.open() 方法返回的文件描述符。
**buffer** - 数据写入的缓冲区。
**offset** - 缓冲区写入的写入偏移量。
**length** - 要从文件中读取的字节数。
**position** - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。
**callback** - 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象。
~~~
fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
if (err){
console.log(err);
}
console.log(bytes + " 字节被读取");
// 仅输出读取的字节
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
}
});
~~~
* * * * *
~~~
fs.write(fd, data[, position[, encoding]], callback)
~~~
**fd** - 通过 fs.open() 方法返回的文件描述符。
**data** - 要写入的数据
**callback** - 回调函数有三个参数(err,written,buffer),written指定buffer的多少字节用来写
~~~
fs.write(fd, data, function(err, written,buffer){
if (err){
console.log(err);
}
console.log(written + " 字节被写入");
});
~~~
* * * * *
~~~
fs.close(fd, callback)
~~~
**fd** - 通过 fs.open() 方法返回的文件描述符。
**callback** - 回调函数,没有参数。
~~~
fs.close(fd, function(err){
if (err){
console.log(err);
}
console.log("文件关闭成功");
});
~~~