猿问

nodejs fs.read中position参数为null读取文件指针无法记录上一次位置?

为什么连续读取两次文件,第二次position参数设置为null无法记录上一次文件指针的位置?
https://img4.mukewang.com/5c88c4a700010f3908000334.jpg

像上图这样,连续设置两个null,可以实现第二个fs.read能记录上一次指针的位置;那么第一张图中,为什么不能记录上一次fs.read文件指针的位置????,请大神指出我是代码敲错了还是理解有误帮我分析下谢谢!!!参考书籍是nodejs权威指南第一版中node版本为
https://img3.mukewang.com/5c88c4aa00018a8106070147.jpg

书中源码为
https://img3.mukewang.com/5c88c4ad00013e0306500508.jpg

他的执行结果为
https://img4.mukewang.com/5c88c4af0001614505290123.jpg


红颜莎娜
浏览 583回答 2
2回答

慕森王

与你遇到了同样的问题,给你解释下,Nodejs的文档有记录。文档说,跟你想的恰好相反,如果你读取的时候记录传入了position这个值,那么,读取函数不会移动文件指针,也就是,文件指针还在你上一次读取的位置。你第一次从3字节处读取,由于你传入了position,文件指针不移动。所以,再次读取的时候,需要自己去计算postion,否则,你再次用null读取的时候,文件指针将在上一次停留的位置继续读取。而如果你用null读取,将会从当前位置开始读取,length长度的字节,并且,重点了:指针会向后移动读取的字节数,所以,当你下次再用null读取的时候,文件指针将会后移!简单点一句话说:用null读取的时候,read函数会移动文件指针,这个指针由内部维护。而如果你用position读取,那么你的定位是绝对的,文件总是从你指定的position的位置开始读取,不受上一次读取的影响。不知道我这样说,你能不能明白。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答