Trong Khoa học máy tính, tệp là tài nguyên được sử dụng để ghi dữ liệu một cách riêng biệt trong thiết bị lưu trữ của máy tính. Nút. js không ghi đè điều này theo bất kỳ cách nào và hoạt động với mọi thứ được coi là tệp trong hệ thống tệp của bạn
Đọc tệp và tài nguyên có nhiều cách sử dụng
- Thống kê, phân tích và báo cáo
- Học máy
- Xử lý các tệp văn bản hoặc nhật ký lớn
Đôi khi, những tệp này có thể lớn một cách vô lý, với hàng gigabyte hoặc terabyte được lưu trữ và việc đọc toàn bộ chúng là không hiệu quả
Khả năng đọc từng dòng tệp cho chúng tôi khả năng chỉ tìm kiếm thông tin có liên quan và dừng tìm kiếm khi chúng tôi đã tìm thấy những gì chúng tôi đang tìm kiếm. Nó cũng cho phép chúng tôi chia dữ liệu thành các phần hợp lý, chẳng hạn như nếu tệp có định dạng CSV
Readline [từ v0. 12 trở đi]
Nút. js có mô-đun gốc để đọc các tệp cho phép chúng tôi đọc từng dòng. Nó đã được thêm vào năm 2015 và được dùng để đọc từ bất kỳ dòng
const fs = require['fs'];
2 nào mỗi lần một dòngThực tế này làm cho nó trở thành một tùy chọn linh hoạt, không chỉ phù hợp với các tệp mà còn phù hợp với cả các đầu vào dòng lệnh như
const fs = require['fs'];
3. Tài liệu về mô-đun const fs = require['fs'];
4 có thể được tìm thấy tại đâyVì
const fs = require['fs'];
4 là một mô-đun gốc. Bạn không cần phải sử dụng const fs = require['fs'];
6 cho bất kỳ trình quản lý gói nào khác để thêm nó, chỉ cần const fs = require['fs'];
7const readline = require['readline'];
và bạn tốt để đi
Vì phương thức
const fs = require['fs'];
4 phải được cung cấp cùng với một luồng, trước tiên chúng ta phải tạo nó bằng một mô-đun gốc khác - const fs = require['fs'];
9const fs = require['fs'];
Bước tiếp theo là tạo đối tượng sẽ đọc từ luồng bằng hàm
const fs = require['fs'];
00const fs = require['fs'];
0Đảm bảo rằng bạn thay thế
const fs = require['fs'];
01 bằng đường dẫn thực tới một tệp trong hệ thống tệp của bạnKhi quá trình chuẩn bị hoàn tất - việc đọc từng dòng tệp và in nội dung của nó ra bảng điều khiển có thể được thực hiện bằng cách
const fs = require['fs'];
3Về cơ bản, ở đây chúng ta đang nói rằng bất cứ khi nào sự kiện
const fs = require['fs'];
02 xảy ra trong const fs = require['fs'];
03, nó sẽ gọi hàm của chúng ta và truyền cho nó nội dung được đọc từ luồng. Trong trường hợp của chúng tôi, chúng tôi không muốn phức tạp hóa mọi thứ và chỉ cần in nó ra bàn điều khiểnđầu đọc dòng
Sau phần giải thích chi tiết về cách bạn có thể đọc từng dòng tệp bằng nút gốc. js, hãy xem phiên bản ngắn hơn của nó bằng cách sử dụng mô-đun trình đọc dòng nguồn mở từ npm
Vì đây là một mô-đun không phải bản địa, chúng tôi cần đảm bảo rằng chúng tôi đã khởi tạo dự án npm theo cách phù hợp với
const fs = require['fs'];
04 và sau đó cài đặt nóconst fs = require['fs'];
7Điều này sẽ cài đặt phần phụ thuộc và thêm nó vào tệp
const fs = require['fs'];
05Sau khi hoàn tất, việc đọc tệp theo từng dòng chỉ tương tự như ví dụ trước mà không cần tạo
const fs = require['fs'];
03 ở giữaHãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
const fs = require['fs'];
0Một tính năng khá hữu ích ở đây là dừng đọc khi một số điều kiện trở thành sự thật. Điều này đạt được bằng cách trả lại
const fs = require['fs'];
07 đơn giản từ chức năng gọi lạiVí dụ: chúng tôi có thể đọc từng dòng một tệp cho đến khi chúng tôi tìm thấy một dòng có từ "STOP" trong đó
Có một cách tiếp cận hơi khác, sử dụng hai lệnh gọi lại lồng nhau và cú pháp có vẻ tự nhiên hơn đối với các nhà phát triển Java ngoài kia
const fs = require['fs'];
2Ở đây, chúng tôi đang sử dụng chức năng
const fs = require['fs'];
08, chức năng này không cung cấp cho chúng tôi các dòng từ một tệp ngay lập tức, nhưng nó cung cấp cho chúng tôi một const fs = require['fs'];
09. Nó có bộ chức năng riêng như const fs = require['fs'];
30 và const fs = require['fs'];
31 cho phép chúng tôi kiểm soát nhiều hơn một chút đối với quá trình đọc từng dòng tệp trong Node. jsN-readlines
Một cú pháp khác được cung cấp bởi mô-đun npm
const fs = require['fs'];
32Hãy cài đặt nó
const fs = require['fs'];
8Và yêu cầu nó
const fs = require['fs'];
9Để có thể đọc từ một tệp, chúng ta nên tạo một đối tượng mới, cung cấp đường dẫn đến tệp của chúng tôi làm đối số
const fs = require['fs'];
0Việc lấy các dòng từ tệp được thực hiện bằng cách gọi hàm
const fs = require['fs'];
33const fs = require['fs'];
0Một chức năng thú vị của mô-đun
const fs = require['fs'];
32 là const fs = require['fs'];
35. Nó đặt lại con trỏ và bắt đầu quá trình đọc từ đầu tệpGhi chú. Nó chỉ hoạt động nếu không đạt được kết thúc
Lỗi thường gặp
Một lỗi phổ biến khi đọc từng dòng tệp trong Node. js đang đọc toàn bộ tệp vào bộ nhớ và sau đó chia nhỏ nội dung của nó bằng cách ngắt dòng
Đây là một ví dụ không chính xác có thể làm quá tải hệ thống của bạn nếu bạn cung cấp cho nó một tệp đủ lớn
const fs = require['fs'];
1Thoạt nhìn, có vẻ như đầu ra giống nhau đối với phương pháp này cũng như đối với các phương pháp trước đó và trên thực tế, nó hoạt động tốt đối với các tệp nhỏ. Nhưng hãy tiếp tục và thử làm việc với một công ty lớn. Đó chắc chắn không phải là thứ bạn muốn thấy trong hệ thống sản xuất của mình
Phần kết luận
Có nhiều cách để đọc từng dòng tệp trong Node. js và việc lựa chọn cách tiếp cận phù hợp hoàn toàn là quyết định của lập trình viên
Bạn nên nghĩ đến kích thước của các tệp bạn định xử lý, các yêu cầu về hiệu suất, kiểu mã và các mô-đun đã có trong dự án. Đảm bảo kiểm tra một số trường hợp góc như tệp lớn, trống hoặc không tồn tại và bạn sẽ thấy ổn với bất kỳ ví dụ nào được cung cấp