Я не могу воспроизвести это поведение.Судя по тому, что я тестировал, ваша функция работает нормально.Пожалуйста, исправьте меня, если я неправильно понял, но после запуска этого теста:
readNew(path.join(__dirname, 'test.txt'), 0).then((result) => {
console.log('Read: ' + result.bytesRead + ' bytes');
readNew(path.join(__dirname, 'test.txt'), result.bytesRead).then((result) => {
console.log('Read: ' + result.bytesRead + ' bytes');
});
});
Файл test.txt в этом случае содержит: Несколько байтов!
И это мой вывод:
Read: 13 bytes
Read: 0 bytes
Возможно, что-то не так в другом месте вашего кода, например, предоставление позиции, которая находится вне диапазона.
РЕДАКТИРОВАТЬ:
Вот полный тест с использованием библиотеки mz
.Он выдает тот же результат, что и другой тест, используя fs-extra
.
const fs = require('mz/fs');
const path = require('path');
async function readNew(filename, mark) {
var fileDescriptor = await fs.open(filename, "r");
var buffer = new Buffer(32768);
var result = await fs.read(fileDescriptor, buffer, 0, buffer.length, mark);
await fs.close(fileDescriptor);
return result;
}
readNew(path.join(__dirname, 'test.txt'), 0).then(([bytesRead, buffer]) => {
console.log('Read: ' + bytesRead + ' bytes');
readNew(path.join(__dirname, 'test.txt'), bytesRead).then(([bytesRead, buffer]) => {
console.log('Read: ' + bytesRead + ' bytes');
});
});