Tôi đã nhận thấy vấn đề lớn là gì đối với openSync, khi bạn mở tệp bằng openSync, bạn sẽ không nhận được bộ mô tả tệp. Bạn chỉ nhận được nó như là một đối số để gọi lại nếu bạn mở với cuộc gọi không đồng bộ. Vấn đề là bạn phải có bộ mô tả tập tin để đóng tập tin! Có những thứ khác mà một lập trình viên có thể muốn làm cho một tập tin mà bạn cần bộ mô tả tập tin cho là tốt. Có vẻ như thiếu sót đáng kể trong API fs cho node.js không cung cấp cách truy cập biến fd mà cuộc gọi trả về khi mở ở chế độ không đồng bộ nếu bạn mở bằng cách sử dụng các cuộc gọi đồng bộ. Điều đó về cơ bản sẽ làm cho mở đồng bộ unuseable cho hầu hết các ứng dụng. Tôi thực sự không muốn phải sử dụng tập tin async mở ra và đóng lại sau này trong sự phát triển của tôi nếu tôi có thể tránh nó, có cách nào để lấy biến fd mà tôi cần để đóng tệp thành công khi sử dụng đồng bộ mở?Cách lấy tệp mô tả trong node.js nếu bạn mở tệp bằng openSync
6
A
Trả lời
12
Bạn sẽ nhận được gì khác từ openFileSync ngoài bộ mô tả tệp?
var fs = require('fs')
var path = require('path')
var fd = fs.openSync(path.join(process.cwd(), 'log.txt'), 'a')
fs.writeSync(fd, 'contents to append')
setTimeout(function() {
console.log('closing file now')
fs.closeSync(fd)
}, 10000)
Chạy lsof /path/to/log.txt
trong khi kịch bản nút trên đang chạy và chạy lsof /path/to/log.txt
một lần nữa sau khi kịch bản được thực hiện cho thấy các tập tin đã được đóng lại một cách chính xác
Điều đó nói rằng những gì bạn đang cố gắng để thực hiện bằng cách mở tập tin? Có lẽ có một cách tốt hơn như phát trực tuyến cho tình huống cụ thể của bạn
Các vấn đề liên quan
- 1. Cách truy cập Trình mô tả tệp của tệp mở
- 2. Cách lấy đường dẫn tệp bằng cách sử dụng bộ mô tả tệp trên Android?
- 3. Lấy bộ mô tả tệp được phân bổ cao nhất
- 4. Cách mở lại một bộ mô tả tệp đã đóng
- 5. Trộn fdopen() và mở() -> mô tả tệp sai
- 6. Mở lại bộ mô tả tệp bằng quyền truy cập khác?
- 7. Làm cách nào để lấy tên tệp từ bộ mô tả tệp bên trong mô-đun hạt nhân?
- 8. ndk-stack: Không thể mở tệp biểu tượng .../../libutil.so. Lỗi (9): Bộ mô tả tệp sai
- 9. Trả lại luồng đầu vào từ tệp mô tả tệp bằng cách sử dụng Android DownloadManager
- 10. Cách lấy tên tệp của mô-đun __main__ bằng Python?
- 11. Cách lấy phần mở rộng của tệp bằng PHP?
- 12. Trình điều khiển thiết bị Linux, Có thể lấy số nhỏ bằng cách sử dụng bộ mô tả tệp không?
- 13. Thay đổi kích thước bộ mô tả tệp trong httperf
- 14. Bộ mô tả ổ cắm và tệp
- 15. Cách lấy dòng tệp đang mở trong python?
- 16. Lỗi: EBADF, bộ mô tả tệp sai khi chạy nút bằng nohup vĩnh viễn
- 17. Đọc thông tin của Liên hệ bằng cách sử dụng Trình mô tả tệp trong android
- 18. Mở một tệp bằng C là gì?
- 19. Cách mở tệp bằng cách mở bằng câu lệnh
- 20. Làm cách nào để viết ký tự dòng mới vào bộ mô tả tệp bằng Python?
- 21. Làm cách nào để nhận luồng FILE * từ bộ mô tả tệp?
- 22. bắc cầu giữa hai bộ mô tả tệp
- 23. Tự mô tả định dạng tệp cho hình ảnh gigapixel?
- 24. Trợ giúp với các bộ mô tả tệp trong Unix
- 25. Làm cách nào để bạn nhập tệp không phải node.js?
- 26. Node.js - Hệ thống tệp nhận loại tệp
- 27. Mô-đun hệ thống tệp node.js truy cập trong Meteor
- 28. Lỗi trong tệp (tệp, "rt"): đối số 'mô tả' không hợp lệ trong chương trình complete.cases
- 29. Nếu có đề xuất mô tả gói
- 30. Bạn sử dụng tên biến nào cho các bộ mô tả tệp?
cảm ơn câu trả lời nhanh! Sử dụng ví dụ của bạn và bạn đã đúng, nó hoạt động như một sự quyến rũ. Điều đó có nghĩa là nó sẽ trả về fd sau openSync, API chỉ không nói rõ ràng và tôi không nghĩ thử nó trước khi đăng câu hỏi. Tôi chỉ đơn giản là cố gắng đăng nhập một số dữ liệu thời gian để kiểm tra trên hệ thống của mình, tôi là một anh chàng C/C++ đang cố gắng tìm ra node.js trên máy của tôi và các tệp quen thuộc với tôi, nhưng tôi sẽ kiểm tra luồng trên đề xuất của bạn để xem chúng có phù hợp hơn với tôi trong nút hay không. Cảm ơn một lần nữa! – Brian
Không sao cả. Các tài liệu node.js là tốt đẹp cho hầu hết các phần. Đôi khi, mặc dù họ giả sử rất nhiều người đọc và hơi bị cắt ngắn một chút: – Noah
gợi ý: '__dirname + '/ log.txt'' cũng hoạt động –