#node.js
Вопрос:
Node.js в документации говорится fs.read
, что требуется несколько аргументов , один из position
которых «Указывает, с чего начать чтение в файле».
Однако затем в документах говорится: «Если позиция является целым числом, позиция файла останется неизменной». (документы говорят то же самое fs.readSync
и отсылают читателя обратно fs.read
)
Я думал, что мы объявим файл position
, подобный offset
аргументу для записи в выходной буфер, который принимает целое значение в байтах ( 0
чтобы начать с начала выходного буфера).
Кто — нибудь знает, как это должно работать? Я пробовал поиграть в REPL, но не смог этого понять
Ответ №1:
Потому fs.read
что может быть вызван несколько раз. Таким образом, узел рассчитает position
это для вас внутренне. Например, когда вы читаете текстовый файл с содержимым abcdef
, код может быть таким, как показано ниже.
const fs = require('fs')
const buffer = Buffer.alloc(1)
const fd = fs.openSync('./1.txt', 'r ')
// at begining, position is 0
let read = fs.readSync(fd, buffer)
// print a
console.log(Buffer.from(buffer,0, read).toString())
// now position is 1
read = fs.readSync(fd, buffer)
// print b, position is 2
console.log(Buffer.from(buffer,0, read).toString())
// if you specify postion : 0, positon is unchanged, it's still 2
read = fs.readSync(fd, buffer, {
position: 0
})
// print a
console.log(Buffer.from(buffer,0, read).toString())
// continue
read = fs.readSync(fd, buffer)
// print c, position is 3
console.log(Buffer.from(buffer,0, read).toString())
Комментарии:
1. спасибо, означает ли это, что мы вообще не должны устанавливать
position
параметр? если да, то зачем приводить это в качестве аргумента?