Буфер¶
Буфер представляет собой некоторую область памяти, которая используется для временного хранения потоков данных операций ввода/вывода, в частности это касается файловой системы и работы с сетью.
В Node.js работа с буфером осуществляется с использованием глобального класса Buffer
, который позволяет обрабатывать потоки бинарных данных. Поскольку класс глобальный, он может быть использован в любом месте приложения без импорта самого модуля.
Создание¶
Для создания пустого буфера размером в 10 байт используйте метод Buffer.alloc()
.
1 |
|
После создания буфера его размер изменить нельзя.
Размер буфера хранится в свойстве length
.
1 2 |
|
Чтобы заполнить создаваемый буфера значением по умолчанию, просто передайте это значение Buffer.alloc()
вторым параметром
1 2 |
|
Если передаваемое по умолчанию значение меньше размера самого буфера, то оно будет повторяться в нем, пока полностью его не заполнит.
Для создания буфера сразу нужного размера в Node.js имеется метод Buffer.from()
, который принимает строку и создает под нее буфер.
1 |
|
Вторым необязательным параметром методу Buffer.from()
можно передать кодировку.
1 |
|
Запись¶
Чтобы записать данные в пустой или уже заполненный буфер, используйте метод [Buffer instance].write()
, который принимает следующие параметры:
- строку для записи;
- позицию, с которой необходимо начать запись;
- длину от изначальной строки, которую необходимо записать;
- кодировку (по умолчанию
utf8
).
Обязательным аргументом является только строка для записи.
1 2 3 4 5 6 7 |
|
Пример записи в буфер с дополнительными параметрами.
1 2 3 4 5 6 7 |
|
Метод [Buffer instance].write()
возвращает длину записанной в буфер строки.
1 2 |
|
Чтение¶
Для получения данных из буфера в том формате, в котором они в него заносились, в Node.js имеется метод [Buffer instance].toString()
, принимающий следующие необязательные параметры:
- кодировку (по умолчанию
utf8
); - позицию, с которой необходимо начать чтение;
- позицию, на которой закончить чтение.
1 2 3 |
|
Преобразование в JSON¶
Объект Node.js класса Buffer
может быть преобразован в формат JSON с помощью метода [Buffer instance].toJSON()
.
1 2 |
|
Buffer API¶
В Node.js класс Buffer
предоставляет ряд полезных методов, облегчающих работу с буфером:
Buffer.isEncoding()
- принимает кодировку и возвращает true
, если ее испольщование допустимо при работе с буфером;
1 |
|
Buffer.isBuffer()
- принимает данные и возвращает true
, если они являются экземпляром класса Buffer
;
1 |
|
Buffer.byteLength()
- возвращает длину переданной строки в байтах (это не то же самое, что количество символов в строке), вторым необязательным параметром можно передать кодировку;
1 2 |
|
Buffer.concat()
- принимает массив объектов класса Buffer
и объединяет их в один, вторым необязательным параметром можно передать длину итогового буфера.
1 2 3 4 |
|