Nodejs đọc tệp và gửi phản hồi
Tệp I/O được cung cấp bởi các trình bao bọc đơn giản xung quanh các chức năng POSIX tiêu chuẩn. Để sử dụng mô-đun này, hãy làm 6. Tất cả các phương thức đều có dạng không đồng bộ và đồng bộ Show
Biểu mẫu không đồng bộ luôn lấy lệnh gọi lại hoàn thành làm đối số cuối cùng của nó. Các đối số được truyền cho lệnh gọi lại hoàn thành phụ thuộc vào phương thức, nhưng đối số đầu tiên luôn được dành riêng cho một ngoại lệ. Nếu thao tác được hoàn thành thành công, thì đối số đầu tiên sẽ là 7 hoặc 8Khi sử dụng biểu mẫu đồng bộ, mọi ngoại lệ sẽ được đưa ra ngay lập tức. Bạn có thể sử dụng try/catch để xử lý các ngoại lệ hoặc cho phép chúng nổi lên Đây là một ví dụ về phiên bản không đồng bộ
Đây là phiên bản đồng bộ
Với các phương thức không đồng bộ, không có thứ tự được đảm bảo. Vì vậy, những điều sau đây dễ bị lỗi
Có thể là 9 được thực thi trước 0. Cách chính xác để làm điều này là xâu chuỗi các cuộc gọi lại
Trong các quy trình bận rộn, lập trình viên được khuyến khích sử dụng các phiên bản không đồng bộ của các cuộc gọi này. Các phiên bản đồng bộ sẽ chặn toàn bộ quá trình cho đến khi chúng hoàn tất — tạm dừng tất cả các kết nối Đường dẫn tương đối đến tên tệp có thể được sử dụng. Tuy nhiên, hãy nhớ rằng đường dẫn này sẽ liên quan đến 1Hầu hết các hàm fs cho phép bạn bỏ qua đối số gọi lại. Nếu bạn làm như vậy, một lệnh gọi lại mặc định sẽ được sử dụng để hiển thị lại các lỗi. Để có dấu vết đến trang cuộc gọi ban đầu, hãy đặt biến môi trường 2
Bộ đệm API #Các hàm 3 hỗ trợ chuyển và nhận đường dẫn dưới dạng cả chuỗi và Bộ đệm. Cái sau nhằm mục đích làm cho nó có thể hoạt động với các hệ thống tệp cho phép tên tệp không phải UTF-8. Đối với hầu hết các mục đích sử dụng thông thường, việc làm việc với các đường dẫn dưới dạng Bộ đệm sẽ không cần thiết vì chuỗi API tự động chuyển đổi sang và từ UTF-8Lưu ý rằng trên một số hệ thống tệp nhất định (chẳng hạn như NTFS và HFS+), tên tệp sẽ luôn được mã hóa dưới dạng UTF-8. Trên các hệ thống tệp như vậy, việc chuyển Bộ đệm được mã hóa không phải UTF-8 sang các hàm 3 sẽ không hoạt động như mong đợiLớp. fs. FSWatcher#Các đối tượng được trả về từ 5 thuộc loại nàyCuộc gọi lại 6 được cung cấp cho 5 nhận các sự kiện 8 của FSWatcher được trả vềĐối tượng tự phát ra các sự kiện này Biến cố. 'biến đổi'#Phát ra khi có gì đó thay đổi trong thư mục hoặc tệp đã xem. Xem thêm chi tiết trong 5Đối số 90 có thể không được cung cấp tùy thuộc vào sự hỗ trợ của hệ điều hành. Nếu cung cấp 90, nó sẽ được cung cấp dưới dạng 92 nếu 5 được gọi với tùy chọn 94 của nó được đặt thành 95, nếu không thì 90 sẽ là một chuỗi 9Biến cố. 'lỗi'#Phát ra khi xảy ra lỗi người quan sát. đóng lại()#Ngừng theo dõi các thay đổi trên 97 đã choLớp. fs. ReadStream# 98 là một Luồng có thể đọc đượcBiến cố. 'mở'#
Được phát ra khi tệp của ReadStream được mở Biến cố. 'đóng lại'#
Được phát ra khi bộ mô tả tệp cơ bản của 98 đã bị đóngreadStream. byte đã đọc #Số lượng byte đã đọc cho đến nay readStream. con đường#Đường dẫn đến tệp mà luồng đang đọc từ đó như được chỉ định trong đối số đầu tiên của 22. Nếu 23 được truyền dưới dạng chuỗi, thì 24 sẽ là chuỗi. Nếu 23 được chuyển thành 92, thì 24 sẽ là 92Lớp. fs. Số liệu thống kê #Các đối tượng được trả về từ 29, 00 và 01 và các đối tượng đồng bộ của chúng thuộc loại này
Đối với một tệp thông thường, 00 sẽ trả về một chuỗi rất giống với chuỗi này 2Xin lưu ý rằng ________ 501, ________ 502, ________ 503 và ________ 504 là các thể hiện của đối tượng 05 và để so sánh giá trị của các đối tượng này, bạn nên sử dụng các phương pháp thích hợp. Đối với hầu hết các mục đích sử dụng chung, 06 sẽ trả về số mili giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 00. 00. 00 UTC và số nguyên này phải đủ để so sánh, tuy nhiên, có các phương pháp bổ sung có thể được sử dụng để hiển thị thông tin mờ. Bạn có thể tìm thêm chi tiết trong trang Tham khảo JavaScript MDNGiá trị thời gian thống kêThời gian trong đối tượng stat có ngữ nghĩa sau
Trước nút v0. 12, 04 giữ 03 trên hệ thống Windows. Lưu ý rằng kể từ v0. 12, 04 không phải là "thời gian sáng tạo" và trên các hệ thống Unix, nó chưa bao giờLớp. fs. GhiStream# 01 là Luồng có thể ghiBiến cố. 'mở'#
Được phát ra khi tệp của WriteStream được mở Biến cố. 'đóng lại'#
Được phát ra khi bộ mô tả tệp cơ bản của 01 đã bị đóngwriteStream. byteWritten#Số lượng byte được ghi cho đến nay. Không bao gồm dữ liệu vẫn đang xếp hàng để ghi writeStream. con đường#Đường dẫn đến tệp mà luồng đang ghi vào như được chỉ định trong đối số đầu tiên của 05. Nếu 23 được truyền dưới dạng chuỗi, thì 07 sẽ là chuỗi. Nếu 23 được chuyển thành 92, thì 07 sẽ là 92fs. truy cập (đường dẫn [, chế độ], gọi lại) #Kiểm tra quyền của người dùng đối với tệp hoặc thư mục được chỉ định bởi 23. Đối số 13 là một số nguyên tùy chọn chỉ định kiểm tra khả năng truy cập sẽ được thực hiện. Các hằng số sau xác định các giá trị có thể có của 13. Có thể tạo mặt nạ bao gồm OR theo bit của hai hoặc nhiều giá trị
Đối số cuối cùng, 26, là một hàm gọi lại được gọi với một đối số lỗi có thể xảy ra. Nếu bất kỳ kiểm tra khả năng truy cập nào không thành công, đối số lỗi sẽ được điền. Ví dụ sau kiểm tra xem tệp 27 có thể được đọc và ghi bởi quy trình hiện tại không 0Không nên sử dụng 28 để kiểm tra khả năng truy cập tệp trước khi gọi 29, 30 hoặc 31. Làm như vậy sẽ đưa ra một điều kiện cạnh tranh, vì các quy trình khác có thể thay đổi trạng thái của tệp giữa hai lần gọi. Thay vào đó, mã người dùng nên trực tiếp mở/đọc/ghi tệp và xử lý lỗi phát sinh nếu tệp không thể truy cập đượcVí dụ viết (KHÔNG ĐƯỢC KHUYẾN NGHỊ) 0viết (KHUYẾN NGHỊ) 3đọc (KHÔNG ĐƯỢC KHUYẾN NGHỊ) 0đọc (KHUYẾN NGHỊ) 1Các ví dụ "không được đề xuất" ở trên kiểm tra khả năng truy cập rồi sử dụng tệp; Nói chung, chỉ kiểm tra khả năng truy cập của tệp nếu tệp không được sử dụng trực tiếp, chẳng hạn như khi khả năng truy cập tệp là tín hiệu từ một quy trình khác fs. accessSync(đường dẫn[, chế độ])#Phiên bản đồng bộ của 28. Điều này ném nếu bất kỳ kiểm tra khả năng truy cập nào không thành công và không làm gì khácfs. appendFile(file, data[, options], callback)#Nối dữ liệu vào một tệp không đồng bộ, tạo tệp nếu nó chưa tồn tại. 33 có thể là một chuỗi hoặc một bộ đệmVí dụ 2Nếu 34 là một chuỗi, thì nó chỉ định mã hóa. Ví dụ 3Mọi bộ mô tả tệp được chỉ định phải được mở để nối thêm Ghi chú. Nếu một bộ mô tả tệp được chỉ định là 35, nó sẽ không tự động bị đóngfs. appendFileSync(file, data[, options])#Phiên bản đồng bộ của 36. Trả lại 8fs. chmod(đường dẫn, chế độ, gọi lại)#Thay đổi không đồng bộ các quyền của tệp. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành Xem thêm. chmod(2) fs. chmodSync(đường dẫn, chế độ)#Đồng bộ thay đổi quyền của một tập tin. Trả lại 8. Đây là phiên bản đồng bộ của 39Xem thêm. chmod(2) fs. chown(đường dẫn, uid, gid, gọi lại)#Thay đổi không đồng bộ chủ sở hữu và nhóm của tệp. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành Xem thêm. chown(2) fs. chownSync(đường dẫn, uid, gid)#Đồng bộ thay đổi chủ sở hữu và nhóm của một tập tin. Trả lại 8. Đây là phiên bản đồng bộ của 41Xem thêm. chown(2) fs. đóng (fd, gọi lại) #Đóng không đồng bộ(2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành fs. closeSync(fd)#Đóng đồng bộ(2). Trả lại 8fs. hằng số #Trả về một đối tượng chứa các hằng số thường được sử dụng cho các hoạt động của hệ thống tệp. Các hằng số cụ thể hiện được xác định được mô tả trong Hằng số FS fs. createReadStream(đường dẫn[, tùy chọn])#Trả về một đối tượng 98 mới. (Xem Luồng có thể đọc)Xin lưu ý rằng, không giống như giá trị mặc định được đặt cho 44 trên luồng có thể đọc được (16 kb), luồng được phương thức này trả về có giá trị mặc định là 64 kb cho cùng một tham số 34 là một đối tượng hoặc chuỗi với các giá trị mặc định sau 4 34 có thể bao gồm các giá trị 47 và 48 để đọc một phạm vi byte từ tệp thay vì toàn bộ tệp. Cả 47 và 48 đều bao hàm và bắt đầu đếm từ 0. Nếu 99 được chỉ định và 47 bị bỏ qua hoặc 8, thì 22 sẽ đọc tuần tự từ vị trí tệp hiện tại. 94 có thể là bất kỳ một trong số đó được chấp nhận bởi 92Nếu 99 được chỉ định, thì 98 sẽ bỏ qua đối số 23 và sẽ sử dụng bộ mô tả tệp được chỉ định. Điều này có nghĩa là sẽ không có sự kiện 60 nào được phát ra. Lưu ý rằng 99 sẽ bị chặn; Nếu 64 là sai, thì bộ mô tả tệp sẽ không bị đóng, ngay cả khi có lỗi. Bạn có trách nhiệm đóng nó lại và đảm bảo không có rò rỉ bộ mô tả tệp nào. Nếu 64 được đặt thành true (hành vi mặc định), trên 66 hoặc 48, bộ mô tả tệp sẽ tự động bị đóng 13 đặt chế độ tệp (quyền và bit dính), nhưng chỉ khi tệp được tạoMột ví dụ để đọc 10 byte cuối cùng của tệp dài 100 byte 5Nếu 34 là một chuỗi, thì nó chỉ định mã hóafs. createWriteStream(đường dẫn[, tùy chọn])#Trả về một đối tượng 01 mới. (Xem Luồng có thể ghi) 34 là một đối tượng hoặc chuỗi với các giá trị mặc định sau 6 34 cũng có thể bao gồm tùy chọn 47 để cho phép ghi dữ liệu ở một số vị trí sau phần đầu của tệp. Sửa đổi tệp thay vì thay thế nó có thể yêu cầu chế độ 74 của 75 thay vì chế độ mặc định 76. 77 có thể là bất kỳ một trong số đó được chấp nhận bởi 92Nếu 64 được đặt thành true (hành vi mặc định) trên 66 hoặc 48, bộ mô tả tệp sẽ tự động bị đóng. Nếu 64 là sai, thì bộ mô tả tệp sẽ không bị đóng, ngay cả khi có lỗi. Bạn có trách nhiệm đóng nó lại và đảm bảo không có rò rỉ bộ mô tả tệp nàoGiống như 98, nếu 99 được chỉ định, thì 01 sẽ bỏ qua đối số 23 và sẽ sử dụng bộ mô tả tệp được chỉ định. Điều này có nghĩa là sẽ không có sự kiện 60 nào được phát ra. Lưu ý rằng 99 sẽ bị chặn; Nếu 34 là một chuỗi, thì nó chỉ định mã hóafs. tồn tại (đường dẫn, gọi lại) #Đã thêm vào. v0. 0. 2 Không dùng nữa kể từ. v1. 0. 0 Kiểm tra xem đường dẫn đã cho có tồn tại hay không bằng cách kiểm tra với hệ thống tệp. Sau đó gọi đối số 26 với giá trị true hoặc false. Ví dụ 7Lưu ý rằng tham số cho cuộc gọi lại này không nhất quán với các Nút khác. gọi lại js. Thông thường, tham số đầu tiên cho một Nút. js gọi lại là một tham số 93, tùy chọn theo sau là các tham số khác. Cuộc gọi lại 94 chỉ có một tham số boolean. Đây là một lý do khiến 28 được đề xuất thay vì 94Không nên sử dụng 94 để kiểm tra sự tồn tại của tệp trước khi gọi 29, 30 hoặc 31. Làm như vậy sẽ đưa ra một điều kiện cạnh tranh, vì các quy trình khác có thể thay đổi trạng thái của tệp giữa hai lần gọi. Thay vào đó, mã người dùng nên mở/đọc/ghi tệp trực tiếp và xử lý lỗi phát sinh nếu tệp không tồn tạiVí dụ viết (KHÔNG ĐƯỢC KHUYẾN NGHỊ) 8viết (KHUYẾN NGHỊ) 3đọc (KHÔNG ĐƯỢC KHUYẾN NGHỊ) 0đọc (KHUYẾN NGHỊ) 1Các ví dụ "không được đề xuất" ở trên kiểm tra sự tồn tại và sau đó sử dụng tệp; Nói chung, chỉ kiểm tra sự tồn tại của tệp nếu tệp không được sử dụng trực tiếp, chẳng hạn như khi sự tồn tại của tệp là tín hiệu từ một quy trình khác fs. tồn tạiĐồng bộ hóa (đường dẫn) #Phiên bản đồng bộ của 94. Trả về 02 nếu đường dẫn tồn tại, ngược lại là 03Lưu ý rằng 94 không được dùng nữa, nhưng 05 thì không. (Tham số 26 đến 94 chấp nhận các tham số không phù hợp với các Node khác. gọi lại js. 05 không sử dụng gọi lại. )fs. fchmod(fd, chế độ, gọi lại)#fchmod không đồng bộ(2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành fs. fchmodSync(fd, chế độ)#Fchmod đồng bộ(2). Trả lại 8fs. fchown(fd, uid, gid, gọi lại)#fchown không đồng bộ(2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành fs. fchown Sync(fire, uid, gid)#Đồng bộ(2). Trả lại 8fs. fdatasync(fd, gọi lại)#Fdatasync không đồng bộ (2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành fs. fdatasyncSync(fd)#Đồng bộ fdatasync(2). Trả lại 8fs. fstat(fd, gọi lại)#fstat không đồng bộ(2). Cuộc gọi lại nhận được hai đối số 12 trong đó 13 là một đối tượng 14. 15 giống với 16, ngoại trừ tệp được thống kê được chỉ định bởi bộ mô tả tệp 99fs. fstatSync(fd)#fstat đồng bộ(2). Trả về một thể hiện của 14fs. fsync(fd, gọi lại)#fsync không đồng bộ (2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành fs. fsyncSync(fd)#Đồng bộ fsync(2). Trả lại 8fs. ftruncate(fd, len, gọi lại)ftruncate không đồng bộ (2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành Nếu tệp được tham chiếu bởi bộ mô tả tệp lớn hơn 20 byte, thì chỉ 20 byte đầu tiên sẽ được giữ lại trong tệpVí dụ: chương trình sau chỉ giữ lại bốn byte đầu tiên của tệp 2Nếu tệp trước đó ngắn hơn 20 byte, nó sẽ được mở rộng và phần mở rộng chứa đầy byte rỗng ('\0'). Ví dụ, 3Ba byte cuối cùng là byte rỗng ('\0'), để bù cho việc cắt ngắn quá mức fs. ftruncateSync(fd, len)Rút ngắn đồng bộ(2). Trả lại 8fs. tương lai (fd, atime, mtime, gọi lại)Thay đổi dấu thời gian tệp của tệp được tham chiếu bởi bộ mô tả tệp được cung cấp Ghi chú. Chức năng này không hoạt động trên các phiên bản AIX trước 7. 1, nó sẽ trả về lỗi 24fs. futimesSync(fd, atime, mtime)Phiên bản đồng bộ của 25. Trả lại 8fs. lchmod(đường dẫn, chế độ, gọi lại)#Lchmod không đồng bộ(2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành Chỉ khả dụng trên macOS fs. lchmodSync(đường dẫn, chế độ)#Lchmod đồng bộ(2). Trả lại 8fs. lcown(đường dẫn, uid, gid, gọi lại)#Lchown không đồng bộ(2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành fs. lcownSync(đường dẫn, uid, gid)#Lchown đồng bộ(2). Trả lại 8fs. liên kết (hiệnPath, newPath, gọi lại) #Liên kết không đồng bộ(2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành fs. linkSync( đường dẫn hiện tại, đường dẫn mới)Liên kết đồng bộ(2). Trả lại 8fs. lstat(đường dẫn, gọi lại)#Lstat không đồng bộ(2). Cuộc gọi lại nhận được hai đối số 12 trong đó 13 là một đối tượng 14. 33 giống hệt với 16, ngoại trừ nếu 23 là một liên kết tượng trưng, thì chính liên kết đó đã được thống kê, không phải tệp mà nó đề cập đếnfs. lstatSync(đường dẫn)#Lstat đồng bộ(2). Trả về một thể hiện của 14fs. mkdir(đường dẫn[, chế độ], gọi lại)#Tạo thư mục không đồng bộ. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành. 13 mặc định là 38Xem thêm. mkdir(2) fs. mkdirSync(đường dẫn[, chế độ])#Đồng bộ tạo một thư mục. Trả lại 8. Đây là phiên bản đồng bộ của 40Xem thêm. mkdir(2) fs. mkdtemp(tiền tố[, tùy chọn], gọi lại)#Tạo một thư mục tạm thời duy nhất Tạo sáu ký tự ngẫu nhiên được thêm vào sau một 41 bắt buộc để tạo một thư mục tạm thời duy nhấtĐường dẫn thư mục đã tạo được chuyển dưới dạng chuỗi tới tham số thứ hai của hàm gọi lại Đối số 34 tùy chọn có thể là một chuỗi chỉ định mã hóa hoặc đối tượng có thuộc tính 94 chỉ định mã hóa ký tự sẽ sử dụngVí dụ 4Ghi chú. Phương thức 44 sẽ nối trực tiếp sáu ký tự được chọn ngẫu nhiên vào chuỗi 41. Ví dụ: được cung cấp một thư mục 46, nếu mục đích là tạo một thư mục tạm thời trong 46, thì ____541 phải kết thúc bằng dấu phân cách đường dẫn dành riêng cho nền tảng ( 49) 5fs. mkdtempSync(tiền tố[, tùy chọn])#Phiên bản đồng bộ của 44. Trả về đường dẫn thư mục đã tạoĐối số 34 tùy chọn có thể là một chuỗi chỉ định mã hóa hoặc đối tượng có thuộc tính 94 chỉ định mã hóa ký tự sẽ sử dụngfs. mở (đường dẫn, cờ [, chế độ], gọi lại) #Mở tệp không đồng bộ. Xem mở(2). 74 có thể là
13 đặt chế độ tệp (quyền và bit dính), nhưng chỉ khi tệp được tạo. Nó mặc định là 76 (có thể đọc và ghi)Cuộc gọi lại nhận được hai đối số 77Cờ độc quyền 78 (cờ ______579 khi mở(2)) đảm bảo rằng 23 mới được tạo. Trên các hệ thống POSIX, 23 được coi là tồn tại ngay cả khi nó là một liên kết tượng trưng đến một tệp không tồn tại. Cờ độc quyền có thể hoặc không thể hoạt động với các hệ thống tệp mạng 74 cũng có thể là một số được ghi lại bởi open(2); . Trên Windows, các cờ được dịch sang các cờ tương đương nếu có, ví dụ:. g. 84 đến 85 hoặc 86 đến 87, như được chấp nhận bởi CreateFileWTrên Linux, chức năng ghi theo vị trí không hoạt động khi tệp được mở ở chế độ chắp thêm. Hạt nhân bỏ qua đối số vị trí và luôn nối thêm dữ liệu vào cuối tệp Ghi chú. Hành vi của 29 dành riêng cho nền tảng đối với một số cờ. Như vậy, việc mở một thư mục trên macOS và Linux bằng cờ 71 - xem ví dụ bên dưới - sẽ trả về lỗi. Ngược lại, trên Windows và FreeBSD, một bộ mô tả tệp sẽ được trả về 6Một số ký tự ( 90) được dành riêng trong Windows như được ghi lại bằng cách đặt tên tệp, đường dẫn và không gian tên. Trong NTFS, nếu tên tệp chứa dấu hai chấm, Nút. js sẽ mở một luồng hệ thống tệp, như được mô tả bởi this MSDN pageCác chức năng dựa trên 29 cũng thể hiện hành vi này. ví dụ. 31, 30, v.v.fs. openSync(đường dẫn, cờ[, chế độ])#Phiên bản đồng bộ của 29. Trả về một số nguyên đại diện cho bộ mô tả tệpfs. read(fd, buffer, offset, length, position, callback)#Đọc dữ liệu từ tệp được chỉ định bởi 99 96 là bộ đệm mà dữ liệu sẽ được ghi vào 97 là phần bù trong bộ đệm để bắt đầu ghi tại 98 là một số nguyên chỉ định số byte cần đọc 99 là một đối số chỉ định bắt đầu đọc từ đâu trong tệp. Nếu 99 là 7, dữ liệu sẽ được đọc từ vị trí tệp hiện tại và vị trí tệp sẽ được cập nhật. Nếu 99 là số nguyên, vị trí tệp sẽ không thay đổiCuộc gọi lại được đưa ra ba đối số, 03fs. readdir(đường dẫn[, tùy chọn], gọi lại)#Readdir không đồng bộ(3). Đọc nội dung của một thư mục. Cuộc gọi lại nhận được hai đối số 04 trong đó 05 là một mảng tên của các tệp trong thư mục ngoại trừ 06 và 07Đối số 34 tùy chọn có thể là một chuỗi chỉ định mã hóa hoặc đối tượng có thuộc tính 94 chỉ định mã hóa ký tự sẽ sử dụng cho tên tệp được chuyển đến hàm gọi lại. Nếu 94 được đặt thành 95, tên tệp được trả về sẽ được chuyển thành đối tượng 92fs. readdirSync(đường dẫn[, tùy chọn])#Readdir đồng bộ(3). Trả về một mảng tên tệp không bao gồm 06 và 07Đối số 34 tùy chọn có thể là một chuỗi chỉ định mã hóa hoặc đối tượng có thuộc tính 94 chỉ định mã hóa ký tự sẽ sử dụng cho tên tệp được chuyển đến hàm gọi lại. Nếu 94 được đặt thành 95, tên tệp được trả về sẽ được chuyển thành đối tượng 92fs. readFile(file[, options], callback)#Đọc không đồng bộ toàn bộ nội dung của một tệp. Ví dụ 7Cuộc gọi lại được thông qua hai đối số 20, trong đó 33 là nội dung của tệpNếu không có mã hóa nào được chỉ định, thì bộ đệm thô được trả về Nếu 34 là một chuỗi, thì nó chỉ định mã hóa. Ví dụ 8Ghi chú. Khi đường dẫn là một thư mục, hành vi của 30 và [ 24][] là dành riêng cho nền tảng. Trên macOS, Linux và Windows, một lỗi sẽ được trả về. Trên FreeBSD, nội dung của thư mục sẽ được trả về 9Bất kỳ bộ mô tả tệp được chỉ định nào cũng phải hỗ trợ đọc Ghi chú. Nếu một bộ mô tả tệp được chỉ định là 23, nó sẽ không tự động bị đóngfs. readFileSync(file[, options])#Phiên bản đồng bộ của 26. Trả về nội dung của 35Nếu tùy chọn 94 được chỉ định thì hàm này trả về một chuỗi. Nếu không, nó trả về một bộ đệmGhi chú. Tương tự như [ 30][], khi đường dẫn là một thư mục, hành vi của 24 là dành riêng cho nền tảng 0fs. liên kết đọc(đường dẫn[, tùy chọn], gọi lại)#Liên kết đọc không đồng bộ(2). Cuộc gọi lại nhận được hai đối số 31Đối số 34 tùy chọn có thể là một chuỗi chỉ định mã hóa hoặc đối tượng có thuộc tính 94 chỉ định mã hóa ký tự sẽ sử dụng cho đường dẫn liên kết được chuyển đến lệnh gọi lại. Nếu 94 được đặt thành 95, đường dẫn liên kết được trả về sẽ được truyền dưới dạng đối tượng 92fs. readlinkSync(đường dẫn[, tùy chọn])Liên kết đọc đồng bộ(2). Trả về giá trị chuỗi của liên kết tượng trưng Đối số 34 tùy chọn có thể là một chuỗi chỉ định mã hóa hoặc đối tượng có thuộc tính 94 chỉ định mã hóa ký tự sẽ sử dụng cho đường dẫn liên kết được chuyển đến lệnh gọi lại. Nếu 94 được đặt thành 95, đường dẫn liên kết được trả về sẽ được truyền dưới dạng đối tượng 92fs. readSync(fd, bộ đệm, độ lệch, độ dài, vị trí)#Phiên bản đồng bộ của 42. Trả về số của 43fs. realpath(path[, options], callback)#Đường dẫn thực không đồng bộ(3). 26 có hai đối số 45. Có thể sử dụng 46 để giải quyết các đường dẫn tương đốiChỉ hỗ trợ các đường dẫn có thể chuyển đổi thành chuỗi UTF8 Đối số 34 tùy chọn có thể là một chuỗi chỉ định mã hóa hoặc đối tượng có thuộc tính 94 chỉ định mã hóa ký tự sẽ sử dụng cho đường dẫn được chuyển đến lệnh gọi lại. Nếu 94 được đặt thành 95, đường dẫn được trả về sẽ được truyền dưới dạng đối tượng 92fs. realpathSync(đường dẫn[, tùy chọn])#Đường dẫn thực đồng bộ(3). Trả về đường dẫn đã giải quyết Chỉ hỗ trợ các đường dẫn có thể chuyển đổi thành chuỗi UTF8 Đối số 34 tùy chọn có thể là một chuỗi chỉ định mã hóa hoặc đối tượng có thuộc tính 94 chỉ định mã hóa ký tự sẽ sử dụng cho giá trị được trả về. Nếu 94 được đặt thành 95, đường dẫn được trả về sẽ được truyền dưới dạng đối tượng 92fs. đổi tên (đường dẫn cũ, đường dẫn mới, gọi lại) #Đổi tên không đồng bộ(2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành fs. renameSync(oldPath, newPath)#Đổi tên đồng bộ(2). Trả lại 8fs. rmdir(đường dẫn, gọi lại)#rmdir không đồng bộ (2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành Ghi chú. Sử dụng 58 trên tệp (không phải thư mục) dẫn đến lỗi 59 trên Windows và lỗi 60 trên POSIXfs. rmdirSync(đường dẫn)#Đồng bộ rmdir(2). Trả lại 8Ghi chú. Sử dụng 62 trên tệp (không phải thư mục) dẫn đến lỗi 59 trên Windows và lỗi 60 trên POSIXfs. stat(đường dẫn, gọi lại)#Chỉ số không đồng bộ(2). Cuộc gọi lại nhận được hai đối số 12 trong đó 13 là một đối tượng 14Trong trường hợp xảy ra lỗi, thì 68 sẽ là một trong những Lỗi hệ thống thường gặpKhông nên sử dụng 29 để kiểm tra sự tồn tại của tệp trước khi gọi 29, 30 hoặc 31. Thay vào đó, mã người dùng nên trực tiếp mở/đọc/ghi tệp và xử lý lỗi phát sinh nếu tệp không khả dụngĐể kiểm tra xem một tệp có tồn tại mà không cần thao tác với nó sau đó hay không, nên sử dụng ____ 28fs. statSync(đường dẫn)#Chỉ số đồng bộ(2). Trả về một thể hiện của 14fs. liên kết tượng trưng (mục tiêu, đường dẫn [, loại], gọi lại) #Liên kết tượng trưng không đồng bộ (2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành. Đối số 75 có thể được đặt thành 76, 77 hoặc 78 (mặc định là 77) và chỉ khả dụng trên Windows (bỏ qua trên các nền tảng khác). Lưu ý rằng các điểm giao nhau của Windows yêu cầu đường dẫn đích phải tuyệt đối. Khi sử dụng 78, đối số 81 sẽ tự động được chuẩn hóa thành đường dẫn tuyệt đốiDưới đây là một ví dụ dưới đây 1Nó tạo ra một liên kết tượng trưng có tên là "new-port" trỏ đến "foo" fs. symlinkSync(mục tiêu, đường dẫn[, loại])Liên kết tượng trưng đồng bộ(2). Trả lại 8fs. cắt ngắn (đường dẫn, len, gọi lại)Cắt ngắn không đồng bộ (2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành. Một bộ mô tả tệp cũng có thể được chuyển làm đối số đầu tiên. Trong trường hợp này, 83 được gọi làfs. truncateSync(đường dẫn, len)Cắt ngắn đồng bộ(2). Trả lại 8. Một bộ mô tả tệp cũng có thể được chuyển làm đối số đầu tiên. Trong trường hợp này, 85 được gọi làfs. hủy liên kết (đường dẫn, gọi lại) #Hủy liên kết không đồng bộ(2). Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành fs. unlinkSync(đường dẫn)Hủy liên kết đồng bộ(2). Trả lại 8fs. unwatchFile(tên tệp[, người nghe])#Ngừng theo dõi các thay đổi trên 90. Nếu 6 được chỉ định, chỉ người nghe cụ thể đó bị xóa. Nếu không, tất cả người nghe sẽ bị xóa và bạn đã ngừng xem 90Gọi 90 với tên tệp không được xem là không hoạt động, không phải lỗiGhi chú. 5 hiệu quả hơn 92 và 90. 5 nên được sử dụng thay vì 92 và 90 khi có thểfs. utimes(path, atime, mtime, callback)Thay đổi dấu thời gian tệp của tệp được tham chiếu bởi đường dẫn được cung cấp Ghi chú. các đối số 01 và 02 của các hàm liên quan sau tuân theo các quy tắc này
fs. utimesSync(đường dẫn, atime, mtime)Phiên bản đồng bộ của 04. Trả lại 8fs. đồng hồ (tên tệp [, tùy chọn] [, người nghe]) #
Theo dõi các thay đổi trên 90, trong đó 90 là tệp hoặc thư mục. Đối tượng được trả về là một 97Đối số thứ hai là tùy chọn. Nếu 34 được cung cấp dưới dạng một chuỗi, thì nó chỉ định 94. Mặt khác, 34 phải được chuyển thành một đối tượngCuộc gọi lại của người nghe nhận được hai đối số 21. 22 là 23 hoặc 24 và 90 là tên của tệp đã kích hoạt sự kiệnLưu ý rằng trên hầu hết các nền tảng, 23 được phát ra bất cứ khi nào tên tệp xuất hiện hoặc biến mất trong thư mụcCũng lưu ý rằng cuộc gọi lại của người nghe được đính kèm với sự kiện 24 được kích hoạt bởi 97, nhưng nó không giống với giá trị 24 của 22Hãy cẩn thận #API 31 không nhất quán 100% trên các nền tảng và không khả dụng trong một số trường hợpTùy chọn đệ quy chỉ được hỗ trợ trên macOS và Windows Khả dụng#Tính năng này phụ thuộc vào hệ điều hành cơ bản cung cấp cách thức được thông báo về các thay đổi của hệ thống tệp
Nếu chức năng cơ bản không khả dụng vì lý do nào đó, thì 31 sẽ không thể hoạt động. Ví dụ: việc xem tệp hoặc thư mục có thể không đáng tin cậy và trong một số trường hợp là không thể trên hệ thống tệp mạng (NFS, SMB, v.v.) hoặc hệ thống tệp máy chủ khi sử dụng phần mềm ảo hóa như Vagrant, Docker, v.v.Bạn vẫn có thể sử dụng 40, sử dụng tính năng bỏ phiếu theo thống kê, nhưng chậm hơn và kém tin cậy hơnnút #Trên các hệ thống Linux và macOS, 5 giải quyết đường dẫn đến một inode và xem inode đó. Nếu đường dẫn đã xem bị xóa và tạo lại, nó sẽ được gán một nút mới. Đồng hồ sẽ phát ra một sự kiện để xóa nhưng sẽ tiếp tục xem inode ban đầu. Các sự kiện cho inode mới sẽ không được phát ra. Đây là hành vi dự kiếnTrên AIX, lưu và đóng tệp đang được xem sẽ gây ra hai thông báo - một để thêm nội dung mới và một để cắt bớt. Ngoài ra, các thao tác lưu và đóng trên một số nền tảng gây ra các thay đổi inode buộc các thao tác trên đồng hồ trở nên không hợp lệ và không hiệu quả. AIX giữ lại inode trong suốt thời gian tồn tại của tệp, theo cách đó, mặc dù điều này khác với Linux/OS X, điều này giúp cải thiện khả năng sử dụng của việc xem tệp. Đây là hành vi dự kiến Đối số tên tệp #Việc cung cấp đối số 90 trong hàm gọi lại chỉ được hỗ trợ trên Linux và Windows. Ngay cả trên các nền tảng được hỗ trợ, 90 không phải lúc nào cũng được đảm bảo cung cấp. Do đó, đừng cho rằng đối số 90 luôn được cung cấp trong hàm gọi lại và có một số logic dự phòng nếu nó là null 2fs. watchFile(tên tệp[, tùy chọn], người nghe)#Theo dõi những thay đổi trên 90. Cuộc gọi lại 6 sẽ được gọi mỗi khi tệp được truy cậpĐối số 34 có thể được bỏ qua. Nếu được cung cấp, nó phải là một đối tượng. Đối tượng 34 có thể chứa một giá trị logic có tên là 08 cho biết liệu quy trình có nên tiếp tục chạy hay không khi các tệp đang được xem. Đối tượng 34 có thể chỉ định thuộc tính 51 cho biết tần suất mục tiêu sẽ được thăm dò tính bằng mili giây. Mặc định là 52 6 nhận hai đối số đối tượng stat hiện tại và đối tượng stat trước đó 3Các đối tượng thống kê này là các thể hiện của 54Nếu bạn muốn được thông báo khi tệp được sửa đổi, không chỉ được truy cập, bạn cần so sánh 55 và 56Ghi chú. khi một hoạt động của 40 dẫn đến lỗi 59, nó sẽ gọi trình nghe một lần, với tất cả các trường bằng 0 (hoặc, đối với ngày, Unix Epoch). Trong Windows, các trường 59 và 60 sẽ là 8, thay vì 0. Nếu tệp được tạo sau này, trình nghe sẽ được gọi lại, với các đối tượng thống kê mới nhất. Đây là một thay đổi về chức năng kể từ v0. 10Ghi chú. 5 hiệu quả hơn 40 và 64. 31 nên được sử dụng thay vì 40 và 64 khi có thểGhi chú. Khi một tệp đang được xem bởi 92 biến mất và xuất hiện lại, thì 69 được báo cáo trong sự kiện gọi lại thứ hai (tệp xuất hiện trở lại) sẽ giống như 69 của sự kiện gọi lại đầu tiên (sự biến mất của nó)Điều này xảy ra khi
fs. write(fd, buffer[, offset[, length[, position]]], callback)#Viết 96 vào tệp được chỉ định bởi 99 97 xác định phần bộ đệm sẽ được ghi và 98 là số nguyên chỉ định số byte cần ghi 99 đề cập đến phần bù từ đầu tệp nơi dữ liệu này sẽ được ghi. Nếu 76, dữ liệu sẽ được ghi ở vị trí hiện tại. Xem pwrite(2)Cuộc gọi lại sẽ được cung cấp ba đối số 77 trong đó 78 chỉ định có bao nhiêu byte được viết từ 96Lưu ý rằng việc sử dụng 80 nhiều lần trên cùng một tệp mà không chờ gọi lại là không an toàn. Đối với kịch bản này, chúng tôi khuyên bạn nên sử dụng 81Trên Linux, chức năng ghi theo vị trí không hoạt động khi tệp được mở ở chế độ chắp thêm. Hạt nhân bỏ qua đối số vị trí và luôn nối thêm dữ liệu vào cuối tệp fs. write(fd, chuỗi[, vị trí[, mã hóa]], gọi lại)#Viết 82 vào tệp được chỉ định bởi 99. Nếu 82 không phải là một chuỗi, thì giá trị sẽ bị ép thành một 99 đề cập đến phần bù từ đầu tệp nơi dữ liệu này sẽ được ghi. Nếu 76 dữ liệu sẽ được ghi ở vị trí hiện tại. Xem pwrite(2) 94 là mã hóa chuỗi dự kiếnCuộc gọi lại sẽ nhận các đối số 88 trong đó 78 chỉ định số lượng byte mà chuỗi đã truyền cần được ghi. Lưu ý rằng các byte được viết không giống như các ký tự chuỗi. Xem 90Khác với khi viết 96 thì phải viết cả chuỗi. Không có chuỗi con có thể được chỉ định. Điều này là do độ lệch byte của dữ liệu kết quả có thể không giống với độ lệch chuỗiLưu ý rằng việc sử dụng 80 nhiều lần trên cùng một tệp mà không chờ gọi lại là không an toàn. Đối với kịch bản này, chúng tôi khuyên bạn nên sử dụng 81Trên Linux, chức năng ghi theo vị trí không hoạt động khi tệp được mở ở chế độ chắp thêm. Hạt nhân bỏ qua đối số vị trí và luôn nối thêm dữ liệu vào cuối tệp fs. writeFile(file, data[, options], callback)#Ghi dữ liệu vào tệp không đồng bộ, thay thế tệp nếu tệp đã tồn tại. 33 có thể là một chuỗi hoặc một bộ đệmTùy chọn 94 bị bỏ qua nếu 33 là bộ đệm. Nó mặc định là 13Ví dụ 4Nếu 34 là một chuỗi, thì nó chỉ định mã hóa. Ví dụ 5Bất kỳ bộ mô tả tệp được chỉ định nào cũng phải hỗ trợ ghi Lưu ý rằng việc sử dụng 99 nhiều lần trên cùng một tệp mà không chờ gọi lại là không an toàn. Đối với kịch bản này, chúng tôi khuyên bạn nên sử dụng 81Ghi chú. Nếu một bộ mô tả tệp được chỉ định là 35, nó sẽ không tự động bị đóngfs. writeFileSync(file, data[, options])#Phiên bản đồng bộ của 31. Trả lại 8fs. writeSync(fd, buffer[, offset[, length[, position]]])#fs. writeSync(fd, chuỗi[, vị trí[, mã hóa]])#Các phiên bản đồng bộ của 904. Trả về số byte đã ghiHằng số FS#Các hằng số sau đây được xuất bởi 83. Ghi chú. Không phải mọi hằng số sẽ có sẵn trên mọi hệ điều hànhCác hằng số truy cập tệp #Các hằng số sau đây được dùng với thuộc tính 13 của đối tượng 14 để xác định quyền truy cập đối với một tệp |