Đọc tệp văn bản vào một mảng bằng JavaScript #
Sử dụng phương thức fs.readFileSync() để đọc tệp văn bản vào một mảng trong JavaScript, ví dụ: const contents = readFileSync(filename, 'utf-8').split('\n'). Phương thức sẽ trả về nội dung của tệp, chúng ta có thể phân chia trên mỗi ký tự mới để có được một mảng chuỗi.
Copied!
// 👇️ if using ES6 Imports uncomment line below // import {readFileSync, promises as fsPromises} from 'fs'; const {readFileSync, promises: fsPromises} = require('fs'); // ✅ read file SYNCHRONOUSLY function syncReadFile(filename) { const contents = readFileSync(filename, 'utf-8'); const arr = contents.split(/\r?\n/); console.log(arr); // 👉️ ['One', 'Two', 'Three', 'Four'] return arr; } syncReadFile('./example.txt'); // -------------------------------------------------------------- // ✅ read file ASYNCHRONOUSLY async function asyncReadFile(filename) { try { const contents = await fsPromises.readFile(filename, 'utf-8'); const arr = contents.split(/\r?\n/); console.log(arr); // 👉️ ['One', 'Two', 'Three', 'Four'] return arr; } catch (err) { console.log(err); } } asyncReadFile('./example.txt');Hàm từ ví dụ đầu tiên đọc nội dung của một tệp đồng bộ.
Phương thức fs.readFilesync đưa đường dẫn đến tệp làm tham số đầu tiên và encoding là thứ hai.
Phương thức trả về nội dung của đường dẫn được cung cấp.
Nếu bạn bỏ qua tham số encoding, hàm sẽ trả về bộ đệm, nếu không một chuỗi được trả về.
Chúng tôi đã sử dụng phương thức String.Split để phân chia nội dung trên mỗi ký tự dòng mới.
Chúng tôi đã chuyển một biểu thức chính quy cho phương pháp split().
Copied!
const arr = contents.split(/\r?\n/);Tiền đạo chém / / đánh dấu sự khởi đầu và kết thúc của biểu thức chính quy.
Chúng tôi muốn thay thế cả Copied! Copied!
Ví dụ: Windows sử dụng
Copied!
const arr = contents.split(/\r?\n/); 2 như một kết thúc của ký tự dòng, trong khiCopied!
const arr = contents.split(/\r?\n/); 1 là mặc định trong Unix.Dấu câu hỏi
Copied!
const arr = contents.split(/\r?\n/); 4 khớp với mục trước (\ r) 0 hoặc 1 lần. Nói cách khác,Copied!
const arr = contents.split(/\r?\n/); 0 có thể ở đó, hoặc nó có thể không ở đó.Phương thức split() trả về một mảng chứa các chuỗi con (mỗi dòng) dưới dạng các phần tử.
Đoạn mã ở trên giả định rằng có một tệp Copied!
Copied!
One Two Three FourCấu trúc thư mục trong ví dụ giả định rằng tệp
Copied!
const arr = contents.split(/\r?\n/); 8 và tệpCopied!
const arr = contents.split(/\r?\n/); 7 được đặt trong cùng một thư mục và thiết bị đầu cuối của chúng tôi cũng nằm trong thư mục đó.Ngoài ra, bạn có thể sử dụng đối tượng
Copied!
One Two Three Four 0 để đọc một tệp không đồng bộ.Để đọc một tệp văn bản vào một mảng:
- Sử dụng phương thức
Copied!
One Two Three Four 1 để đọc nội dung của tệp. - Chờ đợi lời hứa rằng phương pháp trả lại.
- Sử dụng phương thức
Copied!
One Two Three Four 2 để chia chuỗi thành một mảng các chuỗi con.
Copied!
// 👇️ if using ES6 Imports uncomment line below // import {readFileSync, promises as fsPromises} from 'fs'; const {readFileSync, promises: fsPromises} = require('fs'); // ✅ read file ASYNCHRONOUSLY async function asyncReadFile(filename) { try { const contents = await fsPromises.readFile(filename, 'utf-8'); const arr = contents.split(/\r?\n/); console.log(arr); // 👉️ ['One', 'Two', 'Three', 'Four'] return arr; } catch (err) { console.log(err); } } asyncReadFile('./example.txt');Phương thức fSpromise.ReadFile () không đồng bộ đọc nội dung của tệp được cung cấp.
Nếu bạn không cung cấp giá trị cho tham số encoding, phương thức sẽ trả về bộ đệm, nếu không thì Copied!
Phương thức trả về một lời hứa đáp ứng nội dung của tệp, vì vậy chúng ta phải
Copied!
One Two Three Four 5 nó hoặc sử dụng phương thứcCopied!
One Two Three Four 6 trên đó để có được chuỗi được giải quyết.Để có được một mảng nội dung của tệp, chúng ta phải gọi phương thức split() trên chuỗi đã được giải quyết.