Буфер¶
Буфер представляет собой некоторую область памяти, которая используется для временного хранения потоков данных операций ввода/вывода, в частности это касается файловой системы и работы с сетью.
В 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 | |