#### # 一個文件的操作過程:
1. open
2. read / write
3. close
~~~
fs.open(path, flags[, mode], callback)
~~~
**path** - 文件的路徑
**flags** - 文件打開的行為,具體值詳見下文
**mode** - 設置文件模式(權限),文件創建默認權限為 0666(可讀,可寫)。
**callback** - 回調函數,帶有兩個參數如:callback(err, fd)。

~~~
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("文件關閉成功");
});
~~~