Tôi muốn tạo một tệp foobar
. Tuy nhiên, nếu người dùng đã có một tệp có tên là foobar
thì tôi không muốn ghi đè lên tệp của họ. Vì vậy, tôi chỉ muốn tạo foobar
nếu nó chưa tồn tại.Tạo một tệp nếu nó chưa tồn tại
Lúc đầu, tôi nghĩ rằng tôi nên làm điều này:
fs.exists(filename, function(exists) {
if(exists) {
// Create file
}
else {
console.log("Refusing to overwrite existing", filename);
}
});
Tuy nhiên, nhìn vào official documentation cho fs.exists
, nó đọc:
fs.exists() là lỗi thời và tồn tại chỉ vì lý do lịch sử. Hầu như không bao giờ có lý do để sử dụng nó trong mã của riêng bạn.
Đặc biệt, kiểm tra nếu tập tin tồn tại trước khi mở nó là một mô hình chống khiến bạn dễ bị tổn thương để đua điều kiện: một quá trình có thể loại bỏ các tập tin giữa các cuộc gọi đến fs.exists() và fs.open(). Chỉ cần mở tệp và xử lý lỗi khi không phải là ở đó.
fs.exists() sẽ không còn được dùng nữa.
Rõ ràng các nhà phát triển nút nghĩ rằng phương pháp của tôi là một ý tưởng tồi. Ngoài ra, tôi không muốn sử dụng chức năng sẽ không được dùng nữa.
Tôi làm cách nào để tạo tệp mà không cần ghi lên tệp hiện có?
nó cho bạn biết: mở tệp và xử lý lỗi (hoặc thiếu) – dandavis