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 文本文件示例
   69   70   71   72   73   74   75   76   77   78   79