Làm cách nào để làm việc với các luồng có thể ghi trong Node.js?

Lam Cach Nao De Lam Viec Voi Cac Luong Co The Ghi Trong Node Js



Dữ liệu được truyền qua mạng giữa nơi nguồn và nơi đích dưới dạng luồng. Phía gửi được gọi là nguồn và phía nhận được biểu thị là luồng đích. Bằng cách sử dụng các Luồng này, dữ liệu ở dạng văn bản hoặc định dạng âm thanh hoặc video có thể được gửi và nhận với khả năng rò rỉ hoặc mất dữ liệu ở mức tối thiểu.

Hướng dẫn này giải thích cách làm việc với các luồng có thể ghi trong Node.js.

Làm cách nào để làm việc với các luồng có thể ghi trong Node.js?

Các ' có thể viết được ” có thể dùng để chèn dữ liệu mới vào file hoặc có thể đặt nội dung của một luồng ngẫu nhiên khác. Việc chuyển đổi hoặc sắp xếp dữ liệu chủ yếu diễn ra với sự trợ giúp của “ đường ống() ' phương pháp. Phương pháp này giúp quá trình chuyển đổi và gán nội dung thuận tiện hơn đồng thời giảm nguy cơ xung đột dữ liệu.







Cú pháp



Luồng có thể ghi được tạo bằng cách gọi phương thức bên dưới:



fs. tạoWriteStream ( 'targetFile.ext' ) ;

Trong cú pháp trên, “ createWriteStream() ” được gọi bởi đối tượng được nhập vào “ fs ” mô-đun và tệp mà dữ liệu sẽ được ghi sẽ được truyền dưới dạng tham số.





Chúng ta hãy xem qua một số ví dụ về các luồng có thể ghi trong Node.js.

Ví dụ 1: Viết nội dung của tệp khác bằng luồng có thể ghi

Trong ví dụ bên dưới, tệp ngẫu nhiên được gửi qua Luồng có thể đọc được và sau đó nội dung tệp này được đặt trong một tệp khác có sẵn tại Luồng có thể ghi:



là fsObj = yêu cầu ( 'fs' ) ;

hằng số dòng dữ liệu = fsObj. tạoReadStream ( 'mynewfile1.txt' ) ;

hằng số ghi dòng = fsObj. tạoWriteStream ( 'mynewfile2.txt' ) ;

dòng dữ liệu. đường ống ( ghi dòng ) ;

Mô tả đoạn mã trên:

  • Đầu tiên ' fs ” mô-đun được nhập và đối tượng của nó được lưu trữ trong “ fsObj ' Biến đổi.
  • Tiếp theo, với sự trợ giúp của “ fasObj ” gọi “ createReadStream() ” để tạo luồng có thể đọc được và truyền tệp có thể đọc được đã chọn làm tham số của nó.
  • Sau đó, luồng có thể ghi được tạo bằng cách gọi “ createWriteStream() ” để ghi nội dung vào file được cung cấp.
  • Lưu trữ kết quả của các phương thức được gọi ở trên trong “ dòng dữ liệu ' Và ' ghi dòng ” các biến tương ứng.
  • Cuối cùng, gọi “. đường ống() ” phương pháp theo sau là “ dòng dữ liệu ” và dẫn đầu với “ ghi dòng ' biến.

Bây giờ, hãy thực thi tệp chứa (controlFlow.js) bằng cách chạy lệnh bên dưới:

Ví dụ 2: Ghi nội dung vào tệp bằng phương thức “stream.write()”

Trong ví dụ này, “ viết() ” được sử dụng để ghi dữ liệu lên file có sẵn trên Stream có thể ghi:

là fsObj = yêu cầu ( 'fs' ) ;
hằng số httpObj = yêu cầu ( 'http' ) ;

hằng số phục vụLocaly = httpObj. máy chủ tạo ( ( yêu cầu, phản hồi ) => {
thử {
hằng số dòng tế bào = fsObj. tạoWriteStream ( 'mynewfile2.txt' ) ;
cellStream. viết ( 'Dữ liệu sẽ được đặt vào tập tin mục tiêu.' ) ;
cellStream. kết thúc ( ) ;
phản ứng. kết thúc ( 'Dữ liệu được ghi qua luồng có thể ghi' )
}
nắm lấy ( lỗi ) {
bảng điều khiển. lỗi ( lỗi ) ;
}
} ) ;
phục vụLocaly. Nghe ( 8080 , ( ) => {
bảng điều khiển. nhật ký ( 'Máy chủ đang chạy trên số cổng Localhost: '8080' ' )
) ;

Mô tả của đoạn mã trên như sau:

  • Đầu tiên, nhập yêu cầu “ fs ' Và ' http ” mô-đun và lưu trữ các đối tượng của chúng trong “ fsObj ' Và ' httpObj ” các biến tương ứng.
  • Tiếp theo, máy chủ đã được tạo bằng cách gọi “ createServer() ” và lưu trữ máy chủ mới được tạo này trong một “ phục vụLocaly ' Biến đổi.
  • Sau đó, sử dụng dấu “ thử ” chặn bên trong hàm gọi lại phương thức và gọi “ createWriteStream() ” phương pháp sử dụng “ fsObj ' Biến đổi.
  • Truyền tệp mục tiêu mà nội dung cần được chèn vào, bên trong dấu ngoặc đơn của phương thức này và lưu kết quả vào phần “ dòng tế bào ' Biến đổi
  • Hãy sử dụng “ viết() ” với biến này và chuyển một thông báo giả bên trong dấu ngoặc đơn sẽ được ghi vào tệp mục tiêu.
  • Đóng luồng bằng cách gọi “ kết thúc() ” và hiển thị thông báo thành công trên trang web bằng cách gọi phương thức “ phản hồi.end() ' phương pháp. Ở đâu ' phản ứng ” là tham số gọi lại của “ máy chủ tạo ' phương pháp.
  • Hãy sử dụng “ nắm lấy ” khối để xử lý bất kỳ lỗi nào xảy ra.
  • Cuối cùng, lắng nghe hoặc thiết lập máy chủ qua số cổng “ 8080 ” và hiển thị thông báo thành công với sự trợ giúp của chức năng gọi lại.

Đầu ra được tạo cho thấy văn bản được cung cấp đã được viết bằng cách sử dụng “ viết() ' phương pháp:

Ví dụ 3: Ghi cùng một dữ liệu trên nhiều tệp

Trong ví dụ này, một tệp sẽ được đọc từ luồng bằng cách sử dụng “ createReadStream() ' phương pháp. Sau đó, nội dung đã đọc được ghi trên nhiều tệp bằng cách sử dụng “ createWriteStream() ' Và ' .đường ống() ” phương pháp:

là fsObj = yêu cầu ( 'fs' ) ;

hằng số dòng dữ liệu = fsObj. tạoReadStream ( 'mynewfile1.txt' ) ;

hằng số viếtStream1 = fsObj. tạoWriteStream ( 'mynewfile2.txt' ) ;

hằng số viếtStream2 = fsObj. tạoWriteStream ( 'usecase.txt' ) ;

dòng dữ liệu. đường ống ( viếtStream1 ) ;

dòng dữ liệu. đường ống ( viếtStream2 ) ;

Trong đoạn mã trên:

  • Các ' createReadStream() ” được gọi và tệp có nội dung cần đọc sẽ được chuyển làm tham số của nó. Kết quả của phương pháp này được lưu trữ trong “ dòng dữ liệu ' Biến đổi.
  • Tiếp theo, “ createWriteStream() ” được gọi và tệp mục tiêu được truyền dưới dạng tham số của nó.
  • Theo cách tương tự, đường dẫn cho tệp thứ hai cũng được truyền dưới dạng luồng có thể ghi và kết quả được lưu trữ trong “ viếtStream1 ' Và ' viếtStream2 ' biến.
  • Sau đó, sử dụng “ .đường ống() ” phương thức nội dung được lưu trữ trong “ dòng dữ liệu ” biến được gán cho “ viếtStream1 ' Và ' viếtStream2 ' biến.

Đầu ra được tạo cho thấy nội dung tệp được cung cấp đã được chèn vào các tệp được cung cấp qua các luồng:

Đó là tất cả về hoạt động của các luồng có thể ghi trong Node.js.

Phần kết luận

Để làm việc với các luồng có thể ghi, phương thức “ createWriteStream() ” được gọi thông qua “ fs ” đối tượng mô-đun. Đường dẫn tệp được nhắm mục tiêu mà nội dung cần được ghi vào đó sẽ được chuyển dưới dạng tham số của nó. Để viết nội dung từ một luồng khác, hãy nhấn “ .đường ống() ” phương pháp được sử dụng. Các ' viết() ” Phương pháp này cũng hữu ích khi viết nội dung trực tiếp trên tệp được nhắm mục tiêu. Bài đăng này đã minh họa quy trình làm việc với các luồng có thể ghi.