Chuyển đổi bộ đệm thành tệp nodejs

Nodejs và JavaScript dựa trên trình duyệt khác nhau vì Node có cách xử lý dữ liệu nhị phân ngay cả trước khi bản nháp ES6 ra đời với ArrayBuffer. Trong Node, lớp Buffer là cấu trúc dữ liệu chính được sử dụng với hầu hết các hoạt động I/O. Đó là dữ liệu nhị phân thô được phân bổ bên ngoài heap V8 và sau khi được phân bổ, không thể thay đổi kích thước

Trước Nodejs v6. 0, để tạo bộ đệm mới, bạn chỉ cần gọi hàm tạo bằng từ khóa new

Để tạo một thể hiện bộ đệm mới, trong các bản phát hành ổn định mới nhất và hiện tại của Node

Hàm tạo new Buffer() không được dùng nữa và được thay thế bằng các phương thức riêng biệt Buffer.from(), Buffer.alloc()Buffer.allocUnsafe()

Thông tin thêm có thể được đọc thông qua tài liệu chính thức

Chuyển đổi bộ đệm thành JSON

Bộ đệm có thể chuyển đổi thành JSON

JSON chỉ định rằng loại đối tượng đang được chuyển đổi là Buffer và dữ liệu của nó

Chuyển đổi JSON sang bộ đệm

Chuyển đổi bộ đệm thành chuỗi Utf-8

.toString() không phải là cách duy nhất để chuyển đổi bộ đệm thành chuỗi. Ngoài ra, theo mặc định, nó chuyển đổi thành chuỗi định dạng utf-8

Một cách khác để chuyển đổi bộ đệm thành chuỗi là sử dụng mô-đun lõi ArrayBuffer0 từ API Nodejs

Bạn muốn nhận được nhiều bài viết như thế này? . Đôi khi, tôi gửi nội dung “chưa từng thấy trước đây” cho người đăng ký của mình

May mắn thay, nút. js đi kèm với các công cụ sẵn có để làm việc với bộ đệm bằng cách sử dụng đối tượng globalBuffer. Vì vậy, bạn không cần bất kỳ thư viện bên ngoài nào cho nó

Chuyển đổi chuỗi thành bộ đệm

Để tạo bộ đệm từ một chuỗi, bạn có thể sử dụng phương thức ArrayBuffer2. Bạn không cần phải nhập/yêu cầu nó một cách rõ ràng, đối tượng Buffer có sẵn trong phạm vi toàn cầu

Nếu vì bất kỳ lý do gì, Nút của bạn. js gây ra lỗi vì bạn chưa nhập nó, bạn vẫn có thể nhập nó một cách rõ ràng bằng cách sau

const { Buffer } = require('buffer');
// OR
import { Buffer } from 'buffer';

Đoạn mã sau đây cho thấy việc khởi tạo một chuỗi và chuyển đổi của nó thành bộ đệm

Là đối số đầu tiên, phương thức ArrayBuffer2, chấp nhận một chuỗi. Mặc dù phương thức tĩnh bị quá tải, các loại đầu vào khác cũng có thể. Đối số thứ hai mong đợi mã hóa tùy chọn khi bạn quyết định nhập chuỗi. Trong hầu hết các trường hợp, khi làm việc với chuỗi, bạn sẽ muốn sử dụng ArrayBuffer5. Mặc dù bạn không cần phải đặt rõ ràng mã hóa ArrayBuffer5 vì dù sao đó cũng là mã hóa mặc định

Chữ ký phương thức cuối cùng trông như thế này. ArrayBuffer7

Chuyển Bơ thành Chuỗi

Thật đơn giản và được hỗ trợ nguyên bản khi bạn muốn chuyển đổi bộ đệm trở lại chuỗi

Đối tượng bộ đệm đã tạo có phương thức ArrayBuffer8 chuyển bộ đệm trở lại thành chuỗi

Ví dụ: trong đoạn mã sau, bạn có thể thấy cách chúng tôi tạo bộ đệm mới từ một chuỗi, giống như trên, sau đó sử dụng phương thức ArrayBuffer8 để chuyển đổi bộ đệm trở lại chuỗi ban đầu của chúng tôi

Tương tự như phương thức ArrayBuffer2, phương thức ArrayBuffer8 cũng có một đối số Buffer2 tùy chọn, bên cạnh một vài tham số tùy chọn khác

Chuyển đổi bộ đệm thành tệp nodejs

bác sĩ gia đình Lee

Theo dõi

24 Tháng ba, 2020

·

3 phút đọc

·

Chỉ dành cho thành viên

Tiết kiệm

Cách đọc tệp bằng Bộ đệm và Truyền phát trong Nút. js

Có hai cách để đọc và ghi tệp;

Khái niệm chung về bộ đệm và truyền phát
  • Bộ đệm hoặc Bộ đệm và Truyền phát thường được sử dụng cho trình phát video trên Internet, chẳng hạn như Youtube
  • Bộ đệm là một hành động để thu thập dữ liệu để phát video
  • Truyền phát là truyền dữ liệu từ máy chủ đến máy tính của người xem

Khái niệm về bộ đệm và truyền phát trong nút. js

Bộ đệm và truyền phát trong nút. js thực sự tương tự như các khái niệm chung

  • Khi đọc một tập tin, Node. js phân bổ bộ nhớ bằng kích thước của tệp và lưu dữ liệu tệp vào bộ nhớ
  • Bộ đệm cho biết bộ nhớ chứa dữ liệu tệp

Đệm

Nút. js có một đối tượng bộ đệm bên trong được gọi là Bộ đệm

đệm. js

Đối tượng đệm có sẵn nhiều phương thức

  • from() : Convert String to Buffer
  • toString() : Convert Buffer to String
  • concat() : Concatenate buffers in an array
  • alloc() : Create empty buffer in given byte length

Vấn đề về bộ đệm

  • Phương pháp bộ đệm Buffer3 tiện lợi nhưng có một vấn đề là bạn cần tạo bộ đệm 100 MB trong bộ nhớ để đọc tệp 100 MB
  • Nếu bạn đọc 10 tệp 100MB, thì bạn phân bổ bộ nhớ 1GB chỉ để đọc 10 tệp
  • Đặc biệt, nó trở thành một vấn đề lớn đối với máy chủ, vì bạn không biết có bao nhiêu người sẽ sử dụng (đọc tệp) đồng thời

Dòng

Nút. js có một phương thức truyền nội bộ gọi là createReadStream

đọcme3. txt

tạoReadStream. js

tạoReadStream
  • phương thức createReadStream() nhận 2 tham số
  • Trong tham số đầu tiên, chúng tôi chỉ định đường dẫn tệp
  • Tham số thứ hai là một tùy chọn tùy chọn và tùy chọn highWaterMark giúp xác định kích thước của bộ đệm (Theo mặc định là 64KB nhưng trong trường hợp này là 16 byte)
  • readStream được sử dụng bằng cách sử dụng trình lắng nghe sự kiện như dữ liệu, kết thúc, sự kiện lỗi

  • Vì kích thước tệp là 48 byte và chúng tôi đặt khả năng truyền dữ liệu thành 16 byte (tùy chọn highWaterMark), chúng tôi có thể thấy rằng nó hoàn thành việc truyền dữ liệu trong 3 lần

Sự kết luận

Luồng có các lợi ích sau so với Bộ đệm

  • phân đoạn dữ liệu liên tục (có thể cho rằng nó có thể truyền bất kỳ số lượng tệp lớn nào trong thời gian vô hạn) trong khi Bộ đệm có những hạn chế trong việc truyền dữ liệu lớn
  • không cần đợi toàn bộ tài nguyên tải trong khi Bộ đệm cần thực hiện lưu vào bộ đệm (chờ)

Cảm ơn bạn

Ảnh của Charles Deluvio trên Bapt

Bộ đệm tệp Nodejs là gì?

Nút. bộ đệm js là đối tượng lưu trữ dữ liệu nhị phân tùy ý . Lý do phổ biến nhất để chạy vào bộ đệm là đọc tệp bằng Node. js. const fs = yêu cầu('fs'); .

Phương thức BUF toJSON() trả về trong nút JS là gì?

Phương thức toJSON() trả về đối tượng JSON dựa trên đối tượng Bộ đệm .

Mã hóa bộ đệm là gì?

mã hóa. Định dạng trong đó các ký tự dữ liệu bộ đệm phải được mã hóa . Giá trị mặc định của nó là 'utf8'. bắt đầu. Chỉ mục bắt đầu của dữ liệu bộ đệm mà mã hóa phải được bắt đầu từ đó. Giá trị mặc định của nó là 0. chấm dứt. Chỉ mục cuối cùng của dữ liệu bộ đệm mà mã hóa phải được thực hiện.

Bộ đệm so với chuỗi là gì?

Chuỗi là một chuỗi ký tự nhưng bộ đệm là một chuỗi byte . Mặc dù bộ đệm có thể chứa nội dung được mã hóa của một giá trị chuỗi nhưng nó cũng có thể mã hóa các loại giá trị khác hoặc bất kỳ dữ liệu nhị phân nào.