为什么连续读取两次文件,第二次position参数设置为null无法记录上一次文件指针的位置?像上图这样,连续设置两个null,可以实现第二个fs.read能记录上一次指针的位置;那么第一张图中,为什么不能记录上一次fs.read文件指针的位置????,请大神指出我是代码敲错了还是理解有误帮我分析下谢谢!!!参考书籍是nodejs权威指南第一版中node版本为书中源码为他的执行结果为
2 回答
慕森王
TA贡献1777条经验 获得超3个赞
与你遇到了同样的问题,给你解释下,Nodejs的文档有记录。文档说,跟你想的恰好相反,如果你读取的时候记录传入了position这个值,那么,读取函数不会移动文件指针,也就是,文件指针还在你上一次读取的位置。你第一次从3字节处读取,由于你传入了position,文件指针不移动。所以,再次读取的时候,需要自己去计算postion,否则,你再次用null读取的时候,文件指针将在上一次停留的位置继续读取。而如果你用null读取,将会从当前位置开始读取,length长度的字节,并且,重点了:指针会向后移动读取的字节数,所以,当你下次再用null读取的时候,文件指针将会后移!
简单点一句话说:用null读取的时候,read函数会移动文件指针,这个指针由内部维护。而如果你用position读取,那么你的定位是绝对的,文件总是从你指定的position的位置开始读取,不受上一次读取的影响。不知道我这样说,你能不能明白。
添加回答
举报
0/150
提交
取消