Node.js文件系统的read()内的指针移动
来源:互联网 发布:阿里云存储服务 个人 编辑:程序博客网 时间:2024/05/18 12:35
我利用的是Node.js8.9.1,对于fs.read()函数的POSITION这个API,官方中文描述如下:
fs.read(fd, buffer, offset, length, position, callback)
对于函数的position参数,描述如下:
position
指定从文件中开始读取的位置。 如果 position
为 null
,则数据从当前文件读取位置开始读取,且文件读取位置会被更新。 如果 position
为一个整数,则文件读取位置保持不变。
从上面可以看出,当position设置为null,则数据会从接着读取,所以我当初想当然的认为一个read()函数运行完毕后,在进行一次这个函数,读取操作会接着上一次进行,简化版程序如下:
var fs=require('fs');
此程序修改自《Node.js权威指南》的代码清单6-11,其中message.txt的内容为“我喜爱编程”。fs.open('./message.txt','r',function (err,fd) {//打开文件 var buf = new Buffer(255); fs.read(fd, buf, 0, 6, 0, function (err, bytesRead, buffer) {//第一次读取到第二个字(文件以utf8格式存储,一个字3字节) console.log(buffer.slice(0, bytesRead).toString());//输出“我喜” fs.read(fd, buf, 0, 6, null, function (err, bytesRead, buffer) {//第二次读取,紧接着指针原有位置读取,同样读两个字 console.log(buffer.slice(0, bytesRead).toString());//输出“我喜” }); });});
本来认为其运行结果应该是
“我喜
爱编”
为什么当第二个read()语句的POSITION设置为null时,没有按照官方文档所说一样, 让指针接着上一次读取的位置接着读下去呢?
我认为官方文档出错的概率是很低的,应该假定其是完全正确的,所以认为第二个read()进行时,指针还在文档的position=0的位置,所以,第一个read()运行后,指针并未移动?为了验证这个想法,我把第一个read()函数修改为:
fs.read(fd, buf, 0, 6, null, function (err, bytesRead, buffer)//将一开始的读取位置设置为null,读取完毕后指针停留在第二个字后;此时运行结果为:
“我喜
爱编”
所以这证明了,当position!=null时,读取文件的指针是不会变化的,当将其设置为null时,指针才会不断随着读取移动。为了加深这个理解,请观察以下程序:
var fs=require('fs');
如有不足,请各位批评指正!fs.open('E:/Node.js/message.txt','r',function (err,fd) { var buf = new Buffer(255); fs.read(fd, buf, 0, 6, null, function (err, bytesRead, buffer) {//读取位置设置为null,读取完毕后指针停留在第二个字后; console.log(buffer.slice(0, bytesRead).toString());//"我喜" fs.read(fd, buf, 0, 6, 0, function (err, bytesRead, buffer) {//直接读取前两个字,读取完毕后指针未变化 console.log(buffer.slice(0, bytesRead).toString());//“我喜” fs.read(fd, buf, 0, 6, null, function (err, bytesRead, buffer) {//读取位置设置为null,此时指针在第二个字后,所以此时读取从第三个字开始 console.log(buffer.slice(0, bytesRead).toString());//"爱编" }); }); });});
阅读全文
0 0
- Node.js文件系统的read()内的指针移动
- Node.js的文件系统的Api
- Node.js的文件系统的Api
- Node.js的文件系统模块(File System)
- Node.js内置的文件系统模块(fs)
- Node.js文件系统、路径的操作函数
- 【汇总】Node.js文件系统、路径的操作函数
- Node.js之操作文件系统(一)
- Node.js之操作文件系统(二)
- Node.js 文件系统
- node.js之文件系统
- Node.js 文件系统
- Node.js 文件系统
- Node.js 文件系统
- Node.js 文件系统
- Node.js 文件系统
- Node.js 文件系统
- Node.js文件系统fs
- 基于word2vec的中文词向量训练
- Swift和Objective-C混编桥接文件设置
- Java进阶之路——从初级程序员到架构师,从小工到专家
- Struts2入门
- js中appendChild()方法
- Node.js文件系统的read()内的指针移动
- 自顶向下,逐步求精
- 绘画武器设计教程,游戏CG原画学习教程之高级武器设计!
- 头发各向异性之comb map
- 机房合作开篇之作——了解C#语言
- 为什么要使用mongoDb
- 软件业务功能---安全设计
- C#读写txt文件的两种方法介绍
- javaScript运行字符串函数或通过字符串函数名运行预定义的函数方法