Hướng dẫn get buffer from file nodejs - lấy bộ đệm từ tệp nodejs

Về cơ bản, bạn cần sử dụng hàm

var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});
0 hoặc
var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});
1 từ mô -đun
var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});
2. Họ trả về nội dung hoàn chỉnh của tệp đã cho, nhưng khác nhau trong hành vi của chúng (không đồng bộ so với đồng bộ).

Nếu chặn Node.js (ví dụ: khi khởi động ứng dụng của bạn) không phải là vấn đề, bạn có thể đi với phiên bản đồng bộ, dễ như:

var fs = require('fs');

var data = fs.readFileSync('/etc/passwd');

Nếu bạn cần đi không đồng bộ, mã là như vậy:

var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});

Xin lưu ý rằng trong cả hai trường hợp, bạn có thể đưa ra một đối tượng

var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});
3 làm tham số thứ hai, ví dụ: Để chỉ định mã hóa để sử dụng. Nếu bạn bỏ qua mã hóa, bộ đệm thô sẽ được trả về:

var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});

Mã hóa hợp lệ là

var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});
4,
var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});
5,
var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});
6,
var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});
7,
var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});
8 và
var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});
9. Ngoài ra còn có mã hóa
var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});
0, nhưng nó không được sử dụng và không nên được sử dụng nữa. Bạn có thể tìm thêm chi tiết về cách xử lý mã hóa và bộ đệm trong tài liệu thích hợp.

Ngày 21 tháng 2 năm 2020

Bộ đệm Node.js là các đối tượng lưu trữ dữ liệu nhị phân trọng tài. Lý do phổ biến nhất để chạy vào bộ đệm là đọc các tệp bằng Node.js:

const fs = require('fs');

const buf = fs.readFileSync('./package.json');
buf instanceof Buffer; // true

buf; // '<Buffer 7b 0a 20 20 22 6e 61 6d 65 22 ...>'

Bộ đệm có chức năng

var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});
1 có một đối số duy nhất
var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});
2. Hàm
var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});
1 cho phép bạn chuyển đổi bộ đệm thành các chuỗi có ý nghĩa tùy thuộc vào mã hóa. Ví dụ: nếu bạn đọc một tệp văn bản thông thường bằng
var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});
4, bạn có thể chuyển đổi bộ đệm thành văn bản từ tệp bằng cách sử dụng
var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});
5:

const fs = require('fs');

const buf = fs.readFileSync('./package.json');
buf.toString('utf8'); // '{ "name": "masteringjs.io", ...}'

Một mã hóa phổ biến khác là

var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});
9, mã hóa bộ đệm dưới dạng chuỗi ký tự
var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});
7. Mã hóa Hex rất hữu ích vì nó không yêu cầu thoát - bạn có thể đặt bộ đệm được mã hóa hex vào URI mà không sử dụng
var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});
8 hoặc đặt nó vào JSON mà không thoát
var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});
9, vì Hex mã hóa chỉ chứa các ký tự chữ và số.

const fs = require('fs');

const buf = fs.readFileSync('./package.json');
buf.toString('hex'); // '7b0a2020...'

Tạo bộ đệm mới

Bạn có thể tạo bộ đệm từ các chuỗi bằng hàm

const fs = require('fs');

const buf = fs.readFileSync('./package.json');
buf instanceof Buffer; // true

buf; // '<Buffer 7b 0a 20 20 22 6e 61 6d 65 22 ...>'
0. Giống như
var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});
1, bạn có thể chuyển một đối số
var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});
2 cho
const fs = require('fs');

const buf = fs.readFileSync('./package.json');
buf instanceof Buffer; // true

buf; // '<Buffer 7b 0a 20 20 22 6e 61 6d 65 22 ...>'
0.

let buf = Buffer.from('Hello, World', 'utf8');

buf.toString('hex'); // '48656c6c6f2c20576f726c64'
buf.toString('utf8'); // 'Hello, World'

buf = Buffer.from('48656c6c6f2c20576f726c64', 'hex');
buf.toString('utf8'); // 'Hello, World'

Hàm

const fs = require('fs');

const buf = fs.readFileSync('./package.json');
buf instanceof Buffer; // true

buf; // '<Buffer 7b 0a 20 20 22 6e 61 6d 65 22 ...>'
0 cũng chấp nhận các mảng và bộ đệm. Bạn có thể sử dụng
const fs = require('fs');

const buf = fs.readFileSync('./package.json');
buf instanceof Buffer; // true

buf; // '<Buffer 7b 0a 20 20 22 6e 61 6d 65 22 ...>'
0 để sao chép bộ đệm:

const buf2 = Buffer.from(buf);

buf2 === buf; // false
buf2.toString('utf8'); // 'Hello, World'

Hoặc từ một mảng các byte số:

const buf = Buffer.from([
  0x48,
  0x65,
  0x6c,
  0x6c,
  0x6f,
  0x2c,
  0x20,
  0x57,
  0x6f,
  0x72,
  0x6c,
  0x64
]);

buf.toString('utf8'); // Hello, World

Với const fs = require('fs'); const buf = fs.readFileSync('./package.json'); buf instanceof Buffer; // true buf; // '<Buffer 7b 0a 20 20 22 6e 61 6d 65 22 ...>'6

Hàm

const fs = require('fs');

const buf = fs.readFileSync('./package.json');
buf instanceof Buffer; // true

buf; // '<Buffer 7b 0a 20 20 22 6e 61 6d 65 22 ...>'
6 chuyển đổi bộ đệm thành các đối tượng. Dữ liệu thô được mã hóa dưới dạng một loạt các byte mà bạn có thể chuyển đến
const fs = require('fs');

const buf = fs.readFileSync('./package.json');
buf instanceof Buffer; // true

buf; // '<Buffer 7b 0a 20 20 22 6e 61 6d 65 22 ...>'
0.

let buf = Buffer.from('Hello, World', 'utf8');

let obj = { buffer: buf };
obj = JSON.parse(JSON.stringify(obj));

// { type: 'Buffer',
//   data: [ 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100 ] }
obj.buffer;

// To convert from JSON representation back to a buffer, use `Buffer.from()`
obj.buffer = Buffer.from(obj.buffer);
obj.buffer.toString('utf8'); // 'Hello, World'

Thêm hướng dẫn nút

  • Sử dụng BCRYPT-JS để mật khẩu băm trong JavaScript
  • Làm việc với Thư viện Node.js Assert
  • Sửa đổi ủy quyền redirect_uris cho google oauth
  • Ngủ trong nodejs
  • Chuyển đổi HTML thành PUG
  • Chuyển đổi PUG thành HTML
  • Cách cài đặt Node.js trên Ubuntu

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

Lớp bộ đệm trong nút. JS được thiết kế để xử lý dữ liệu nhị phân thô. Mỗi bộ đệm tương ứng với một số bộ nhớ thô được phân bổ bên ngoài V8. Bộ đệm hoạt động có phần giống như các mảng số nguyên, nhưng không thể thay đổi được và có cả một loạt các phương pháp dành riêng cho dữ liệu nhị phân.designed to handle raw binary data. Each buffer corresponds to some raw memory allocated outside V8. Buffers act somewhat like arrays of integers, but aren't resizable and have a whole bunch of methods specifically for binary data.

Làm thế nào để bạn đọc dữ liệu bộ đệm?

Khi bạn đọc vào bộ đệm, bạn duy trì một chỉ mục (hãy gọi nó là đuôi) để bạn biết byte cuối cùng ở đâu.Bạn có thể đọc đến n byte trong đó n là kích thước của bộ đệm của bạn.Khi nói đến việc xử lý dữ liệu, bạn có thể kiểm tra byte lên đuôi.Để theo dõi những gì bạn đã xử lý, hãy duy trì chỉ số đầu.you maintain an index (let's call it tail ) so you know where the last byte is. You can read up to N bytes where N is the size of your buffer. When it comes to processing the data, you can check bytes up to tail . To track what you have already processed, maintain a head index.

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

Bộ đệm JS là đối tượng lưu trữ dữ liệu nhị phân trọng tài.Lý do phổ biến nhất để chạy vào bộ đệm là đọc các tệp bằng nút.objects that store arbitary binary data. The most common reason for running into buffers is reading files using Node.

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

Một bộ đệm tệp là hình ảnh tạm thời của tệp mà bạn có thể chỉnh sửa.Bạn có thể chỉnh sửa bộ đệm tệp mà không ảnh hưởng đến tệp gốc, cho đến khi bạn lưu nó bằng lệnh lưu.Lệnh tệp> Lưu ghi nội dung bộ đệm tệp trên tệp gốc.the temporary image of the file that you can edit. You can edit the file buffer without affecting the original file, until you save it using the Save command. The File > Save command writes the file buffer contents back over the original file.