Lưu bộ đệm vào tệp nodejs

Để ghi tập hợp các byte giữa vị trí 309 và 8.675 (độ dài 8.366) của bộ đệm vào tệp được tham chiếu bởi bộ mô tả tệp fd, việc chèn bắt đầu từ vị trí 100

let buffer = Buffer.alloc(8675); fs.open("index.html", "w", (err, fd) => {   fs.write(fd, buffer, 309, 8366, 100, (err, writtenBytes, buffer) => {     console.log(`Wrote ${writtenBytes} bytes to file`);     // Wrote 8366 bytes to file   }); }); 

Lưu ý rằng đối với các tệp được mở ở chế độ chắp thêm (a), một số hệ điều hành có thể bỏ qua các giá trị vị trí, luôn thêm dữ liệu vào cuối tệp. Ngoài ra, không an toàn khi gọi fs. ghi nhiều lần trên cùng một tệp mà không cần chờ gọi lại. Sử dụng fs. tạoWriteStream

Nút. js là một khuôn khổ để phát triển các phương pháp tiếp cận mạng hiệu quả và có thể mở rộng dựa trên công cụ JavaScript của Chrome. Do cơ chế I/O nhẹ, hiệu quả cao và không chặn, Node. JS đã trở thành một lựa chọn hoàn hảo cho các ứng dụng thông tin trong thế giới thực

Ngoài các chức năng và dịch vụ nổi bật khác nhau, khả năng đọc và ghi tệp rất tuyệt vời. Đây là một tính năng mạnh mẽ được cung cấp bởi NodeJS và cực kỳ đơn giản để thực hiện. Một tệp có thể được đọc hoặc ghi đồng bộ hoặc không đồng bộ từ máy tính của bạn.  

Hướng dẫn này sẽ giới thiệu cho bạn về nút. js và các mô-đun của nó được đề cập trong chương trình nút js. Với sự trợ giúp của một ví dụ, chúng tôi sẽ đọc, viết và nối các tệp JS, điều này sẽ giúp chúng tôi hiểu nút. js tốt hơn. Ngoài ra, các mẹo và thủ thuật khắc phục sự cố cũng sẽ được thảo luận ở phần cuối của hướng dẫn này.  

Mô-đun fs tích hợp cho phép nút js ghi tệp theo chương trình. Tên của mô-đun (fs) là viết tắt của "hệ thống tệp" và nó chứa tất cả các chức năng cần thiết để đọc, ghi và xóa tệp trên máy cục bộ. Do tính năng phân biệt này của nodejs ghi JSON vào tệp, JavaScript là ngôn ngữ chức năng để lập trình công cụ CLI và back-end

Chúng tôi có thể mã hóa bất kỳ chuỗi JavaScript nào bằng tệp ghi nút fs. UTF-8 là mã hóa phổ biến cho các trang web và các tài liệu khác. Bộ ký tự được sử dụng cho nội dung của tệp được gọi là mã hóa tệp. Các mã hóa thường được sử dụng bao gồm 'utf8', 'ASCII', 'binary', 'hex', 'base64' và 'utf16le'.  

Đáng kể nhất, nodejs ghi vào tệp và đọc trên hệ thống tệp cục bộ là tuyệt vời. Tận dụng các khả năng này để ghi nhật ký, xuất và nhập dữ liệu từ các tệp JSON và XML, truyền dữ liệu từ vị trí này sang vị trí khác, v.v.

nút là gì. Mô-đun 'fs' của Js?

Mô-đun 'fs' được tích hợp sẵn do Node cung cấp. js để thực hiện các hành động khác nhau. Mô-đun 'fs' là mô-đun hệ thống tệp giúp bạn làm việc với các tệp, như đọc tệp, ghi tệp, nối thêm tệp, v.v. Nó hoạt động cả đồng bộ và không đồng bộ. Hãy xem một ví dụ về cách sử dụng mô-đun fs.  

const fs = require('fs') 

Thay vì var, chúng tôi sẽ sử dụng const là tính năng ES6. Điều này sẽ cần mô-đun tích hợp từ Node. Js và nó sẽ sẵn sàng để sử dụng.  

Một số chức năng của mô-đun fs bao gồm

  1. hủy liên kếtĐồng bộ hóa. UnlinkSync nhằm mục đích xóa các tệp đồng bộ.  
  2. hủy liên kết. Giống như unlinkSync, chức năng hủy liên kết được sử dụng để xóa các tệp không đồng bộ. Các tham số của hủy liên kết là đường dẫn đến tệp bị xóa và chức năng gọi lại. Khi xóa không thành công, hàm gọi lại sẽ trả về lỗi. Nếu nó bị xóa, nó sẽ hiển thị một thông báo cho biết nó đã được xóa thành công.  
  3. Đọc tài liệu. Chúng tôi sử dụng hàm readFile để đọc tệp không đồng bộ. Vị trí đường dẫn và chức năng gọi lại được cung cấp dưới dạng tham số.  
  4. readFileSync. Chúng tôi sử dụng chức năng readFile Sync để đọc các tệp đồng bộ theo thứ tự. Đường dẫn của tệp được lấy làm tham số.  
  5. ghiTệp. Hàm writeFile được sử dụng để ghi các tệp js không đồng bộ. Các hàm fileName, textToBeWritten, FileEncodingType, Callback được lấy làm tham số đầu vào.  
  6. writeFileSync. Hàm writeFileSync của nút được sử dụng để ghi vào các tệp một cách đồng bộ. Các hàm fileName, inputText và mã hóa tệp được lấy làm tham số đầu vào.  
  7. số liệu thống kê. isDirectory. Khi cần xác minh một tập tin có tồn tại hay không, chúng ta sử dụng hàm stats. isDirectory. Nó trả về một giá trị boolean.  

Mô-đun 'fs' cung cấp cả tùy chọn không đồng bộ và đồng bộ.  

  • Tùy chọn đồng bộ ngăn mã chạy cho đến khi hành động tệp được thực hiện.  
  • Tùy chọn không đồng bộ không ngăn mã chạy. Nó gọi một chức năng gọi lại sau khi thao tác tệp kết thúc.  

Bạn có muốn khám phá thêm nút không. mô-đun js? .  

Đọc từ nút. tập tin js

Có hai phương pháp để đọc một tập tin trong nút. js. Chúng ta sẽ thấy cả hai.  

1. Đọc tệp không đồng bộ

Một lợi ích khác của việc sử dụng nút. js là tùy chọn để js ghi vào tệp json. Đọc tệp không đồng bộ là cách đơn giản nhất để đọc tệp bằng fs. hàm readFile(). Nó không chặn vì nó không chặn phần còn lại của mã trong khi thực thi

Như bạn đã biết, các hàm JavaScript cơ bản và hàm không đồng bộ này là các tính năng của JavaScript. Hàm readFile() này có hai đối số, một đối số sẽ xác định đường dẫn tệp của chúng ta và đối số thứ hai là hàm gọi lại.  

const fs = require('fs'); 
fs.readFile('file.txt', (err, data) => { 
if(err) { 
throw err; 
} 
console.log(data.toString()); 
}); 

Hàm gọi lại sẽ được gọi với hai đối số, một là lỗi và một là dữ liệu; .  

2. Đọc tệp đồng bộ

Cách thứ hai để đọc tệp là sử dụng phiên bản đồng bộ của fs. readFile() được gọi là fs. readFileSync(). Nó cũng nhận hai đối số, đối số đầu tiên là đường dẫn của tệp và đối số còn lại là mã hóa ký tự. Nếu mã hóa ký tự không được sử dụng thì đầu ra sẽ được hiển thị dưới dạng bộ đệm

Bạn cũng có thể bỏ qua bộ đệm in trong thiết bị đầu cuối bằng cách chỉ định mã hóa tệp làm tham số thứ hai sau đường dẫn tệp.  

const fs = require('fs'); 
try{ 
const data = fs.readFileSync(file.txt); 
console.log(data.toString()); 
} catch (err) { 
console.error(err); 
} 

Trước khi gọi hàm gọi lại, cả hai hàm fs. readFIle() và fs. writeFile() đọc toàn bộ nội dung của tệp trong bộ nhớ. Do đó, nó có thể ảnh hưởng đến việc sử dụng bộ nhớ và thực thi ứng dụng bất cứ khi nào bạn đọc một tệp lớn.  

Viết cho nút. Tập tin Js

Sử dụng phương thức writeFile tiện dụng bên trong mô-đun fs của thư viện tiêu chuẩn để tiết kiệm thời gian và công sức.  

Hãy hiểu chi tiết từng thuật ngữ.  

  1. tệp = (chuỗi). Đường dẫn tệp của tệp và nó cho phép ghi.  
  2. dữ liệu = (chuỗi hoặc bộ đệm). Dữ liệu bạn muốn ghi vào tệp.  
  3. mã hóa = (chuỗi tùy chọn). Mã hóa dữ liệu
  4. gọi lại = (chức năng tùy chọn (err) {}). Nếu không có lỗi, err === null, nếu không thì err chứa thông báo lỗi.  

Giống như chúng ta có hai phương thức để đọc tới Node. js, chúng tôi cũng có hai phương pháp để ghi vào Node. Tập tin Js

1. Ghi tệp không đồng bộ

Để ghi một tệp không đồng bộ, chúng ta cần sử dụng hàm fs. hàm writeFile(). Nó sẽ tuân theo quy trình tương tự mà chúng tôi đã thực hiện trong tệp đọc không đồng bộ. Thay vì đọc, chúng tôi sẽ sử dụng fs. writeFile(). Đây là cách dễ nhất để ghi tệp dữ liệu trong Node. js. Hàm này nhận ba đối số - tên tệp, dữ liệu cần ghi và hàm gọi lại. Hàm callback() chỉ chấp nhận một đối số để xử lý lỗi trong trường hợp này.  

const fs = require('fs'); 
const data = "This is the new content of the file."; 
fs.writeFile('file.txt', data, (err) => { 
if(err) { 
throw err; 
console.log("Data has been written to file successfully."); 
}); 

Tệp của chúng tôi đã được tạo thành công bằng văn bản mà chúng tôi đã chỉ định trước đó. Đây là cách bạn có thể sử dụng NodeJS để đọc và ghi tệp không đồng bộ.  

2. Ghi tệp đồng bộ

Để ghi một tệp đồng bộ, chúng ta cần sử dụng hàm fs. writeFileSync() chức năng. Nó sẽ tuân theo quy trình tương tự mà chúng tôi đã theo dõi trong tệp đọc một cách đồng bộ. Thay vì đọc, chúng tôi sẽ sử dụng fs. writeFileSync().  

const fs = require('fs'); 
const data = "This is the new content of the file."; 
try { 
fs.writeFileSync('file.txt', data); 
console.log("File has been saved."); 
} catch (error) { 
console.error(err); 
} 

Nếu tệp đã tồn tại, các phương thức này sẽ ghi đè nội dung của tệp theo mặc định. Bạn nên đặt cờ làm tùy chọn thứ ba nếu bạn muốn nối thêm dữ liệu vào tệp.  

const fs = require('fs'); 
const data = "Append this data at the end of the file."; 
fs.writeFile('file.txt', data, {flag: 'a+'}, (err) => { 
if (err) { 
throw err; 
} 
console.log("File is updated."); 
}); 

Một số tùy chọn cờ như sau

FlagsDescriptionrMở tệp để đọc.  
  • Đưa ra một ngoại lệ nếu tệp bị thiếu hoặc không tồn tại
r+Mở tệp để đọc và ghi
  • Đưa ra một ngoại lệ nếu tệp bị thiếu hoặc không tồn tại
rsCờ này mở tệp để đọc ở chế độ đồng bộ

mở

Mở tệp để viết.  
  • Tệp được tạo (nếu không tồn tại) hoặc bị xóa (nếu tồn tại)
wxTương tự như cờ 'w', nhưng sẽ không thành công nếu đường dẫn tồn tại. w+Mở tệp để đọc và ghi.  
  • Tệp được tạo (nếu không tồn tại) hoặc bị xóa (nếu tồn tại)
w++Nó tương tự như ‘w+’ nhưng nó sẽ bị lỗi nếu đường dẫn tồn tại

Cả hai cách tiếp cận này tiếp tục ghi vào tệp cho đến khi toàn bộ nội dung được ghi. Nếu nhiều dữ liệu được ghi, nó có thể làm chậm ứng dụng của bạn. Vì vậy, trong trường hợp đó, sử dụng luồng để ghi vào các tệp lớn sẽ là một tùy chọn thích hợp hơn.  

Đang thêm vào tệp

Để nối thêm dữ liệu fs. appendFile() được sử dụng cho một tệp không đồng bộ (và fs. appendFileSync() để đồng bộ hóa). Nếu tệp không tồn tại, nó được tạo. Để thay đổi hành vi của các hoạt động, tham số tùy chọn có thể được sử dụng.  

Cú pháp để thêm vào tệp là.  

fs.appendFile(path, data[,options], callback) 

Phương thức này chấp nhận bốn tham số như đã đề cập ở trên, chúng được mô tả bên dưới.  

  • Đường dẫn - Đường dẫn là một chuỗi, URL bộ đệm hoặc số nguyên đại diện cho tên tệp hoặc bộ mô tả tệp được thêm vào.  
  • dữ liệu - Dữ liệu được thêm vào được biểu thị bằng Chuỗi hoặc Bộ đệm.  
  • tùy chọn - Đó là một chuỗi hoặc đối tượng có thể được sử dụng để chỉ định các tham số đầu ra tùy chọn. Nó chứa ba cài đặt có thể thay đổi.  
  1. mã hóa. Nó chỉ định mã hóa của tệp. 'utf8' là cài đặt mặc định.  
  2. cách thức. Chế độ tệp được chỉ định bởi một số nguyên gọi là chế độ. '0o666' là giá trị mặc định.  
  3. lá cờ. Nó chỉ định cờ được sử dụng để nối thêm tệp. 'a' là giá trị mặc định.  
  • gọi lại - Đây là chức năng được thực hiện khi phương thức được gọi.  
  1. sai lầm. Khi một phương thức không thành công, lỗi này được đưa ra.  

Xử lý lỗi

Đối với mọi nhà phát triển, việc xử lý lỗi là quan trọng và rất cần thiết. Phải mất rất nhiều kỹ năng để xác định vị trí và gỡ lỗi. Trong khi làm việc với các tệp đọc và ghi ở trên, chúng tôi nhận thấy một đối số lỗi nhưng chúng tôi đã không giải quyết nó. Chúng ta hãy xem tóm tắt nhanh về cách sử dụng nó.  

Trong khi đọc hoặc ghi tệp nếu có lỗi thời gian chạy thì phương thức gọi lại được gọi với đối tượng Lỗi làm đối số đầu tiên. Ném lỗi thời gian chạy dưới dạng Nút. js, như chúng ta đã làm trước đây, là cách đơn giản nhất để xử lý chúng. Tuy nhiên, vì điều này có thể khiến ứng dụng bị sập nên không được khuyến khích trừ khi bạn không còn lựa chọn nào khác.  

________số 8

Có hai cách tiếp cận khi xử lý các lỗi vận hành, chẳng hạn như chỉ định một đường dẫn không thể truy cập. Một tùy chọn là chuyển lỗi cho chức năng gọi lại. Sau đó, bạn bao gồm một số logic xử lý lỗi trong cuộc gọi lại, chẳng hạn như ghi nhật ký. Bạn cũng có thể bao gồm các khối thử/bắt xung quanh mã gọi phần chương trình có thể xảy ra lỗi.  

Phần kết luận

Giống như đọc tệp, Node. js có khả năng ghi tệp một cách chính xác và phức tạp. Đọc, viết và nối thêm tệp trong Node. js là một số hoạt động cơ bản mà các nhà phát triển phải hiểu khi làm việc với Node. JS.  

Chúng tôi đã thảo luận mọi thứ về cách đọc và ghi tệp trong Node. Js cả theo cách Đồng bộ và Không đồng bộ. Sử dụng các khái niệm được thảo luận trong blog này và tạo các tệp tùy chỉnh của bạn trong Node. js để đưa hành trình học tập của bạn tiến thêm một bước.  

Nếu bạn đang có kế hoạch học nút. js từ đầu, hãy bắt đầu với chương trình node js của knowledgeHut. Với tài liệu học tập dễ hiểu và các buổi thực hành, chúng tôi có tất cả các thiết lập sẵn sàng để giúp bạn nâng cao kỹ năng và phát triển.  

Câu hỏi thường gặp (FAQ)

1. Làm cách nào tôi có thể tạo và ghi vào Node. tập tin js?

trả lời. Để ghi tệp không đồng bộ, chúng tôi cần sử dụng hàm fs. hàm writeFile(). Để ghi một tệp đồng bộ, chúng ta cần sử dụng hàm fs. writeFileSync() chức năng.  

2. Cách đọc tệp trong Node. js?

trả lời. các fs. readFile() được sử dụng để đọc tệp không đồng bộ tệp và fs. readFileSync() được sử dụng để đọc tệp đồng bộ.  

3. Làm cách nào để mở tệp nút?

trả lời. Để mở tệp NODE, bạn sẽ cần phần mềm như Node. js. Nếu bạn gặp sự cố khi mở tệp NODE của mình, hãy thử nhấp chuột phải hoặc nhấn và giữ tệp đó. Sau đó, chọn menu thả xuống "Mở bằng".  

4. Ý nghĩa của mô-đun fs trong Node là gì. js?

trả lời. Mô-đun 'fs' là một mô-đun sẵn có được cung cấp bởi Node. js để thực hiện các hành động khác nhau. Mô-đun 'fs' là mô-đun hệ thống tệp giúp bạn làm việc với các tệp, như đọc tệp, ghi tệp, nối thêm tệp, v.v.

5. Làm cách nào để ghi đồng bộ vào một tệp trong nút?

trả lời. Chúng tôi sử dụng phương thức writeFileSync trong mô-đun fs để ghi tệp ở chế độ đồng bộ (). Tham số đầu tiên là tên tệp, theo sau là toàn bộ đường dẫn đến tệp nơi nội dung sẽ được ghi và tham số thứ hai là dữ liệu sẽ được ghi vào tệp.  

Làm cách nào để lưu trữ bộ đệm trong một tệp trong nodejs?

Để đệm dữ liệu trong Node. js, tất cả những gì bạn cần làm là đẩy dữ liệu vào một mảng . Khi dữ liệu được truyền vào xong, nó có thể được chuyển đến logic cơ sở dữ liệu để chèn.

Làm cách nào để chuyển đổi bộ đệm thành tệp trong nodejs?

readFile() , bạn có thể chuyển vùng đệm thành văn bản từ tệp bằng cách sử dụng. toString('utf8') . const fs = yêu cầu('fs'); . readFileSync('. /bưu kiện.

Làm cách nào để lưu tệp trong nút js?

Đang ghi tệp . js là sử dụng fs. API writeFile() .

Làm cách nào để ghi dữ liệu vào tệp trong nodejs?

Các fs. phương thức writeFile() được sử dụng để ghi dữ liệu đã chỉ định vào một tệp một cách không đồng bộ. Theo mặc định, tệp sẽ được thay thế nếu nó tồn tại. Tham số 'tùy chọn' có thể được sử dụng để sửa đổi chức năng của phương thức.