Я хочу, чтобы прочитать байты из файла, вот пример кода:Nodejs readable.read() возвращают нуль
var fs = require('fs');
var stream= fs.createReadStream('./lib');
console.log(stream.read(10));
возвращение нуль.
Я думаю, это потому, что метод read()
напрямую получает данные из внутреннего буфера. Если в буфере недостаточно данных, возвращается null
. Метод read()
- это вызов синхронизации, при этом никакой обратный вызов не передается, поэтому дизайн имеет смысл. Однако я не знаю, когда внутренний буфер может иметь достаточно данных, чтобы мой вызов read()
мог возвращать данные, так как теперь он приостановлен?
Update1:
событие readable
это хороший способ, чтобы начать работу. Но если я хочу прочитать большой файл, а число чтения>65536
, null вернется.
var fs = require('fs');
var stream = fs.createReadStream('./lib');
stream.on('readable', function() {
var buffer = stream.read(65537);
console.log(buffer.length);
});
То, что я хочу точно, stream.read() всегда может возвращать данные до EOF.
Спасибо за предоставленную хорошую точку. Я обновил свой пост и, пожалуйста, взгляните. Кажется, что «читаемое» событие не может решить эту проблему. – BartMao