Node.js 文件系统
试用了三种相关方法
读取文件方法,打开文件方法,写数据方法
fs.readFile
fs.open
fs.write
Node.js 文件系统
Node.js 文件系统封装在 fs 模块是中,它提供了文件的读取、写入、更名、删除、遍历目录、链接等POSIX 文件系统操作。
与其他模块不同的是,fs 模块中所有的操作都提供了异步的和 同步的两个版本,例如读取文件内容的函数有异步的 fs.readFile()
和同步的 fs.readFileSync()。
fs.readFile
fs.readFile(filename,[encoding],[callback(err,data)])
- filename(必选),表示要读取的文件名。
- encoding(可选),表示文件的字符编码。
- callback 是回调函数,用于接收文件的内容。(data是返回的读取到的数据。如果指定了 encoding,data 是一个解析后的字符串,否则 data 将会是以 Buffer 形式表示的二进制数据。)
varfs = 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 文本文件示例
fs.open
fs.open(path, [mode], [callback(err, fd)]
<span style="font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 16.7999992370605px;">path 为文件的路径, mode 为读写模式(<span style="color:#ff0000;">常用的a模式</span>)</span>
<span style="font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 16.7999992370605px;">fd 为文件描述符(用于打开文件方法中的读写文件方法)</span>
<span style="font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 16.7999992370605px;"></span><ul style="line-height: 16.7999992370605px; font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif;"><li style="padding: 2px 0px;">r :以读取模式打开文件,数据流位置在文件起始处。</li><li style="padding: 2px 0px;">r+ :以读写模式打开文件,<span style="font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px; line-height: 16.7999992370605px; white-space: pre; background-color: rgb(240, 240, 240);">数据流位置在文件起始处</span>。</li><li style="padding: 2px 0px;">w :以写入模式打开文件,如果文件不存在则创建,文件存在则清零,<span style="font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px; line-height: 16.7999992370605px; white-space: pre; background-color: rgb(240, 240, 240);">数据流位置在文件起始处</span>。</li><li style="padding: 2px 0px;">w+ :以读写模式打开文件,如果文件不存在则创建<span style="font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px; line-height: 16.7999992370605px; white-space: pre; background-color: rgb(240, 240, 240);">,文件存在则清零,</span><span style="font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px; line-height: 16.7999992370605px; white-space: pre; background-color: rgb(240, 240, 240);">数据流位置在文件起始处</span>。</li><li style="padding: 2px 0px;">a :以追加模式打开文件,如果文件不存在则创建,<span style="font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px; line-height: 16.7999992370605px; white-space: pre; background-color: rgb(240, 240, 240);">数据流位置在文件结尾处追加</span>。</li><li style="padding: 2px 0px;">a+ :以读取追加模式打开文件,如果文件不存在则创建,<span style="font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px; line-height: 16.7999992370605px; white-space: pre; background-color: rgb(240, 240, 240);">数据流位置在文件结尾处追加。</span></li></ul><div> </div><div><h2 style="font-size: 22px; font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif; margin-top: 10px; margin-bottom: 10px;">fs.write(<strong><span style="font-family:Microsoft YaHei;font-size:18px;color:#ff0000;">切记新建编辑器文件file.js时,保存为utf-8编码,否则写入的中文一直是乱码</span></strong>)</h2><div><pre name="code" class="javascript">fs.read(fd, buffer, offset, length, position, [callback(err, bytesWrite)])
- fd: 对应的文件描述符
- buffer: 要写入缓冲区的数据
- offset: 待写入数据的起始位置
- length: 待写入数据长度
- position: 从文件中的什么位置开始写入数据,如果 position 的值为 null,则会从当前文件指针的位置读取(由于是追加模式打开,指针位于文件末尾)。
- callback:回调函数传递bytesWrite(写入的字节数)。
fs.open('writefile.txt', 'a', function opend(err, fd) { if(err) { console.error(err); return; } var writeBuffer = new Buffer('write file 123 写文件 //>>>>') , bufferPosition = 0, bufferLength = writeBuffer.length, filePosition = null; fs.write(fd, writeBuffer, bufferPosition, bufferLength, filePosition, function wrote(err,written){ if(err){throw err;} console.log(err); }); });
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。