======== 文件模块 ======== Node.js作为文件服务器 ===================== `Node.js` 的文件系统模块允许你调用计算机上的文件系统,来操作文件。 我们使用 ``require`` 函数来引入文件系统模块。 .. code-block:: javascript var fs = require('fs') 文件系统的常用用法有: - 读取文件 - 创建文件 - 更新文件 - 删除文件 - 重命名文件 读取文件 ======== 可以使用 ``fs.readFile()`` 方法来操作电脑上的文件 假设我们有以下的 ``HTML`` 文件(和 `Node.js` 文件置于同一目录下) .. code-block:: html

My Header

My paragraph.

创建一个读取该 ``html`` 文件的 `Node.js` 文件,并且返回读取的内容。 .. code-block:: javascript var http = require('http'); var fs = require('fs'); http.createServer(function (req, res) { fs.readFile('demofile1.html', function(err, data) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write(data); res.end(); }); }).listen(8080); 保存上述代码到 ``demo_readfile.js`` ,并执行。 .. code-block:: shell C:\Users\Your Name>node demo_readfile.js 访问 ``_ ,将会看到和例子一样的结果。 创建文件 ======== 创建文件,有以下的方法可以使用: - fs.appendFile() - fs.open() - fs.writeFile() ``fs.appendFile()`` 方法可以往文件添加指定的内容,如果文件不存在,将会被创建。 .. code-block:: javascript // 用fs.appendFile()来创建文件 var fs = require('fs'); fs.appendFile('mynewfile1.txt', 'Hello content!', function (err) { if (err) throw err; console.log('Saved!'); }); ``fs.open()`` 方法的第二个参数 ``flag`` ,如果取值为 ``w`` 的话,也就是 ``writing`` ,表示打开该文件是为了写入。 如果该文件不存在,将会创建一个空文件。 .. code-block:: javascript var fs = require('fs'); fs.open('mynewfile2.txt', 'w', function (err, file) { if (err) throw err; console.log('Saved!'); }); ``fs.writeFile()`` 方法可以替换已存在文件的内容,如果该文件不存在,一个新文件将会被创建,并且包含了写入的内容。 .. code-block:: javascript var fs = require('fs'); fs.writeFile('mynewfile3.txt', 'Hello content!', function (err) { if (err) throw err; console.log('Saved!'); }); 更新文件 ======== 可以调用以下方法来更新文件: - fs.appendFile() - fs.writeFile() ``fs.appendFile()`` 方法可以往文件的末尾添加指定的内容: .. code-block:: javascript // 将"this is my text."这句话添加到文件"mynewfile1.txt"的结尾 var fs = require('fs'); fs.appendFile('mynewfile1.txt', ' This is my text.', function (err) { if (err) throw err; console.log('Updated!'); }); ``fs.writeFile()`` 方法可以替换文件中的内容: .. code-block:: javascript // 替换"mynewfile3.txt"的内容 var fs = require('fs'); fs.writeFile('mynewfile3.txt', 'This is my text', function (err) { if (err) throw err; console.log('Replaced!'); }); 删除文件 ======== 可以调用 ``fs.unlink()`` 来删除指定的文件: .. code-block:: javascript // 删除"mynewfile2.txt" var fs = require('fs'); fs.unlink('mynewfile2.txt', function (err) { if (err) throw err; console.log('File deleted!'); }); 重命名文件 ========== 可以调用 ``fs.rename()`` 方法来重命名文件: .. code-block:: javascript // 将 "mynewfile1.txt" 重命名为 "myrenamedfile.txt" var fs = require('fs'); fs.rename('mynewfile1.txt', 'myrenamedfile.txt', function (err) { if (err) throw err; console.log('File Renamed!'); }); 下一步 ====== .. include:: /_fragments/next-step-to-wechat-mp.rst .. include:: /_fragments/wechat-reward.rst