Page 74 - Node.js开发指南
P. 74
66 第 4 章 Node.js 核心模块
接等 POSIX 文件系统操作。与其他模块不同的是,fs 模块中所有的操作都提供了异步的和
同步的两个 版本,例如 读取文件内 容的函数有 异步的 fs.readFile() 和同步的
fs.readFileSync()。我们以几个函数为代表,介绍 fs 常用的功能,并列出 fs 所有函数
的定义和功能。
4.4.1 fs.readFile
fs.readFile(filename,[encoding],[callback(err,data)])是最简单的读取
文件的函数。它接受一个必选参数 filename,表示要读取的文件名。第二个参数 encoding
是可选的,表示文件的字符编码。callback 是回调函数,用于接收文件的内容。如果不指
定 encoding,则 callback 就是第二个参数。回调函数提供两个参数 err 和 data,err 表
示有没有错误发生,data 是文件内容。如果指定了 encoding,data 是一个解析后的字符
串,否则 data 将会是以 Buffer 形式表示的二进制数据。
例如以下程序,我们从 content.txt 中读取数据,但不指定编码:
var fs = require('fs');
fs.readFile('content.txt', function(err, data) {
if (err) {
console.error(err);
} else {
console.log(data);
}
});
假设 content.txt 中的内容是 UTF-8 编码的 Text 文本文件示例,运行结果如下:
<Buffer 54 65 78 74 20 e6 96 87 e6 9c ac e6 96 87 e4 bb b6 e7 a4 ba e4 be 8b>
这个程序以二进制的模式读取了文件的内容,data 的值是 Buffer 对象。如果我们给
fs.readFile 的 encoding 指定编码:
var fs = require('fs');
fs.readFile('content.txt', 'utf-8', function(err, data) {
if (err) {
console.error(err);
} else {
console.log(data);
}
});
那么运行结果则是:
Text 文本文件示例