, 可选参数,可指定 flag(文件操作选项,如 r+ 读写;w+读写,文 件不存在则创建)及 encoding 属性 encoding: | ,表示文件的字符编码
flag: ,默认 'r'
callback: ,回调函数提供了两个参数 err 和 data,err 表示有没有错误发生,data 是文件内容
如果指定了第二个参数 encoding,回调函数中的 data 是一个解析后的字符串,否则 data 将会是以 Buffer 形式表示的二进制数据
新建一个 content.txt,里面添加一行简单的文本
你好,世界!
异步读取文件,示例代码如下:
var fs = require('fs');
fs.readFile('./content.txt', {flag: 'r+', encoding: 'utf8'}, function(err, data){
if(err){
console.error(err);
return;
}
console.log('异步读取:'+ data);
});
运行结果如下:

当读取文件出现错误时,err 将会是 Error 对象。例如:读取一个不存在的 content1.txt 文件,运行代码时,会报如下错误。

Node.js 的异步编程接口习惯是以函数的最后一个参数为回调函数,通常一个函数只有一个回调函数。回调函数的实际参数中第一个是 err,其余参数是其他返回内容。如果没有发生错误,err 的值会是 null 或 undefined。如果有错误发生,err 通常是 Error 对象的实例
fs.readFileSync(file[, options])
fs.readFile
的同步版本,返回文件的内容
它接受的参数和 fs.readFile 相同,而读取到的文件内容会以函数返回值的形式返回。如果有错误发生,fs 将会抛出异常,需要使用 try 和 catch 捕捉并处理异常。
与同步 I/O 函数不同,Node.js 中异步函数大多没有返回值
同步读取文件示例:
var fs = require('fs');
//同步读取
var data = fs.readFileSync('./content.txt','utf8');
console.log('同步读取:'+ data);
console.log('程序执行完毕!');
运行结果:

2、获取文件信息
fs.stat(path, callback)
通过异步模式获取文件信息
参数:
path: | ,文件的路径
callback: ,回调函数,带有两个参数 err 和 status,stats 是 fs.Stats
对象
fs.stat() 执行后,会将 stats 类的实例返回给其回掉函数。可以通过 stats 类中提供的方法判断文件的相关属性,例如:判断是否为文件夹
var fs = require('fs');
fs.stat('/Users/liuht/code/itbilu/demo/fs.js', function (err, stats) {
console.log(stats.isFile()); //true
})
stats 类中的方法有:

新建一个 js 文件,代码如下:
var fs = require('fs');
console.log('准备打开文件!');
fs.stat('./content.txt', function(err, stats){
if(err){
console.err(error);
}
console.log(stats);
console.log('读取信息成功!');
//检测文件类型
console.log('是否为文件(isFile)?'+ stats.isFile());
console.log('是否为目录(isDirectory)?'+ stats.isDirectory());
})
运行结果:

3、写入文件
fs.writeFile(file, data[, options], callback)
异步的方式把数据写入文件,如果文件存在,该方法写入的内容会覆盖旧的文件内容
参数:
file: | | ,要读取的文件名,必选参数
data: | ,要写入的数据,可以是 也可以是 (对象流)
options: